有时我看到#!/usr/bin/python2
和#!/usr/bin/python3
而不是简单的#!/usr/bin/python
。我明白这种方法的吸引力,你可以明确地说你是否需要Python 2或3,而不需要做一些奇怪的版本检查。
这些是python2
和python3
标准吗?它们会在任何地方都适用吗?还是有风险?
我刚刚确认我有python2
和python3
,但我在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
或者通过符号链接python2
到python2.7
,但重点是它不会为我开箱工作(我想对于许多其他用户也是如此)。