我应该把 shebang 放在我的 Python 脚本中吗?以什么形式?
#!/usr/bin/env python
要么
#!/usr/local/bin/python
这些同样便携吗?最常使用哪种形式?
任何脚本中的 shebang 行都决定了脚本的执行能力,就像独立的可执行文件一样,无需事先在终端中键入python
或在文件管理器中双击它(如果配置正确)。不必要,但通常放在那里,因此当有人看到在编辑器中打开文件时,他们会立即知道他们在看什么。但是,您使用的家当线是非常重要的。
Python 3 脚本的正确用法是:
#!/usr/bin/env python3
默认为版本 3.latest。对于 Python 2.7.latest,请使用python2
代替python3
。
不应使用以下内容(除了极少数情况下,您正在编写与 Python 2.x 和 3.x 兼容的代码):
#!/usr/bin/env python
在PEP 394 中给出这些建议的原因是python
可以在不同系统上引用python2
或python3
。目前,在大多数发行版中都使用python2
,但这在某些时候可能会改变。
另外,请勿使用:
#!/usr/local/bin/python
“在这种情况下,python 可能安装在 / usr / bin / python 或 / bin / python 上,以上#!将失败。”
- “#!/ usr / bin / env python” 与 “#!/ usr / local / bin / python”
这实际上只是一个品味问题。添加 shebang 意味着人们可以根据需要直接调用脚本(假设它被标记为可执行文件);省略它只是意味着python
必须手动调用。
无论哪种方式,运行该程序的最终结果都不会受到影响。这只是手段的选择。
我应该把 shebang 放在我的 Python 脚本中吗?
将 shebang 放入 Python 脚本中以指示:
python
可执行文件,则很有必要这些同样便携吗?最常使用哪种形式?
如果您手动编写 shebang ,请始终使用#!/usr/bin/env python
除非有特殊原因不使用它。即使在 Windows(Python 启动器)上也可以理解这种形式。
注意: 已安装的脚本应使用特定的 python 可执行文件,例如/usr/bin/python
或/home/me/.virtualenvs/project/bin/python
。如果您在 Shell 中激活 virtualenv,如果某些工具损坏了,那就很糟糕。幸运的是,在大多数情况下,由setuptools
或分发包工具自动创建正确的 shebang(在 Windows 上, setuptools
可以自动生成 wrapper .exe
脚本)。
换句话说,如果脚本在源签出中,那么您可能会看到#!/usr/bin/env python
。如果已安装,则 shebang 是特定 python 可执行文件的路径,例如#!/usr/local/bin/python
(注意:您不应手动编写来自后一类别的路径)。
要选择是否在 shebang 中使用python
, python2
或python3
,请参阅PEP 394-Unix-like Systems 上的 “python” 命令 :
...
python
应该仅在 shebang 行中用于与 Python 2 和 3 源兼容的脚本。为了准备最终更改默认版本的 Python,应该将仅 Python 2 的脚本更新为与 Python 3 源兼容,或者在 shebang 行中使用
python2
。