对于 Python 脚本,我需要一个特定的 Python 版本。现在我安装的 Python 2.6 同时包含 python26 和 python2.6
我应该把哪个放在shebang中?
选项1:
#!/usr/bin/env python2.6
选项 2:
#!/usr/bin/env python26
编辑:是的,有理由不使用普通的 python。在我们大学的一些环境中,python 链接到 python2.4,我的代码使用了相当多的 2.6 功能。
您不能总是保证会使用 shebang(或者甚至不能保证用户将拥有该版本)。
你不应该真的限制在一个特定的版本上。最好至少需要一个给定的版本(如果您的代码在 Python 2.6 上工作,为什么它不能在 Python 2.7 上工作?我可能在几个月内没有安装 Python 2.6。)
我会坚持使用/usr/bin/env python
shebang,而是动态检测版本。信不信由你,这样做的“正常”方式是:
import sys
ver = sys.version[:3]
这将为您提供 3 个字符的字符串,例如“2.6”或“2.7”。我只是检查第一个字符 = '2'(假设你想阻止 Python 3 运行你的脚本,因为它在很大程度上是不兼容的)和第三个字符 >= '6'。
编辑:请参阅 Petr 的评论 -sys.version_info[0:2]
改为使用(给你一对喜欢(2, 6)
或(2, 7)
.
刚刚检查了我的 Linux 系统,只是python2.6
没有python26
,所以前者看起来更好。
只是为了澄清一下,我会改用条件导入,在我的情况下,我OrderedDict
只需要 python 2.7+;
try:
from collections import OrderedDict
except ImportError:
print("Python 2.7+ is needed for this script.")
sys.exit(1)
你为什么不直接使用/usr/bin/python
呢?有什么理由不这样做吗?
如果您还没有它,您可以使用以下命令创建指向它的链接:
ln -s /usr/bin/python26 /usr/bin/python
如果您将来升级 python,这可以确保兼容性。