2

对于 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 功能。

4

3 回答 3

8

您不能总是保证会使用 shebang(或者甚至不能保证用户将拥有该版本)。

你不应该真的限制在一个特定的版本上。最好至少需要一个给定的版本(如果您的代码在 Python 2.6 上工作,为什么它不能在 Python 2.7 上工作?我可能在几个月内没有安装 Python 2.6。)

我会坚持使用/usr/bin/env pythonshebang,而是动态检测版本。信不信由你,这样做的“正常”方式是:

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).

于 2011-01-14T08:42:52.627 回答
3

刚刚检查了我的 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)
于 2011-01-14T08:38:14.683 回答
-1

你为什么不直接使用/usr/bin/python呢?有什么理由不这样做吗?

如果您还没有它,您可以使用以下命令创建指向它的链接:

ln -s /usr/bin/python26 /usr/bin/python

如果您将来升级 python,这可以确保兼容性。

于 2011-01-14T08:40:58.163 回答