"python2" / "python3" 在脚本的 shebang 上安全吗?
Is "python2" / "python3" safe on a script's shebang?
有时我会看到 #!/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
,但关键是它对我来说不是开箱即用的(我想对许多其他用户也是如此)。
有时我会看到 #!/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
,但关键是它对我来说不是开箱即用的(我想对许多其他用户也是如此)。