强制脚本在 Python 3 中运行
Posted
技术标签:
【中文标题】强制脚本在 Python 3 中运行【英文标题】:Force Script to run in Python 3 【发布时间】:2015-06-03 22:20:02 【问题描述】:我有一个用 Python 3 编写的脚本,在尝试使用 GUI 时,我发现了一个我似乎喜欢的脚本,叫做 Kivy。每个人都说它适用于 Python 3,但每当我运行它时,它都会在 Python 2.7 中运行。我该怎么做
A:让 Kivy 完全在 Python 3 中运行
或
B:强制我的 Kivy 应用程序调用的脚本在 Python 3 中运行。
我在 OS X 10.10 上安装了 python 3 和 2。
我刚试过
myModule.py:
#!/usr/bin/env python3
import sys
def getVersion():
return sys.version_info
在我运行 kivy myapp.py
的地方,它所做的一切都是打印一个带有 getVersion() 作为该标签内容的标签。
但这似乎仍然显示为 2.7。
【问题讨论】:
#!/usr/bin/env python3
在 GUI 中?
你确定你安装了Kivy的python 3版本吗?如果是这样,是否有两个 kivy 可执行文件(例如“kivy”和“kivy3”)?
据我所知,没有 2 个版本。它只是说它支持 python 3,但总是在 2.7 模式下运行。
【参考方案1】:
She-bang 您希望 GUI 运行的 Python 版本,使用类似
#!/usr/bin/env python3
在.py
文件的顶部。
或者,您可以设置 virtualenv
以使用命令行参数运行 Python 3:
virtualenv -p /usr/bin/python3.4
【讨论】:
这样做时出现语法错误。virtualenv -p /usr/bin/python3.4 import sys print(sys.version_info)
【参考方案2】:
OSX 的包是为 Python 2.7 构建的 - 它不能与 Python 3.x 一起运行。虽然代码与任一 Python 版本兼容,但编译部分必须针对其中一个版本进行编译,而不能同时针对两者进行编译。
您也许可以通过修改kivy.sh
脚本并将命令从python2.7
更改为python3.3
,然后进入包内的kivy
文件夹并运行来使用Python 3.3 make force
。这将为 Python 3 重建,假设您为 Python 3 安装了 Cython(最好是版本 0.21.2,不要使用 0.22,因为它不起作用)。我没有 OSX 机器来检查这个,所以 YMMV。
最好的选择可能是等待,因为我们应该很快就会发布 1.9.0 版本并且其中应该包含 Python 3 包。
【讨论】:
以上是关于强制脚本在 Python 3 中运行的主要内容,如果未能解决你的问题,请参考以下文章