"python2"/"python3"在剧本的 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

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

$ python2
-bash: python2: command not found

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

python2.7 your_script.py

或者通过符号链接python2python2.7,但重点是它不会为我开箱工作(我想对于许多其他用户也是如此)。

最新更新