强制脚本在 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 中运行的主要内容,如果未能解决你的问题,请参考以下文章

在 bash 脚本仍在运行时强制将输出刷新到文件

强制 Nosetests 使用 Python 2.7 而不是 3.4

自动化脚本结束后如何强制仪器不关闭应用程序?

如何强制 Python 进入 64 位模式

在 Python 脚本中采用命令行参数的最佳方式

python - 如何在python Django框架中只强制一个进程的运行实例?