脚本的shebang上的“python2”/“python3”安全吗?

时间:2016-09-08 18:21:02

标签: python scripting portability shebang

有时我会看到#!/usr/bin/python2#!/usr/bin/python3而不是#!/usr/bin/python。我得到了这种方法的吸引力,你可以明确地说明你是否需要Python 2或3而不做一些奇怪的版本检查。

这些是python2python3标准吗?他们会到处工作吗?或者它有风险吗?

我刚刚确认我有python2python3,但我在Cygwin上,所以我不认为这意味着它对许多其他人来说必然是相同的。

注意:对于考虑#!/usr/bin/python是否有号码的人,更重要的是要记住,python甚至不在/usr/bin (例如FreeBSD和OSX),如果你想要最大的可移植性,请使用#!/usr/bin/env python

然后祈祷env位于/usr/bin

1 个答案:

答案 0 :(得分:1)

作为单一参考点 - 我的系统上没有python2可执行文件:

$ python2
-bash: python2: command not found

所以我绝对不会认为这个是便携式的。显然,我仍然可以通过明确选择可执行文件来运行脚本:

python2.7 your_script.py

或者通过将python2符号链接到python2.7,但关键是它对我来说不会开箱即用(我想其他一些用户也是如此)。