Python脚本的正确shebang

Posted

技术标签:

【中文标题】Python脚本的正确shebang【英文标题】:Proper shebang for Python script 【发布时间】:2013-07-24 16:33:59 【问题描述】:

我通常在我的 Python 脚本中使用以下 shebang 声明:

#!/usr/bin/python

最近,我遇到了这个 shebang 声明:

#!/usr/bin/env python

在脚本文档中指出,使用这种形式“更便携”。

这个声明是什么意思?怎么在路中间有空位?它真的有助于盈利吗?

【问题讨论】:

What's the difference between these two python shebangs的可能重复 Why do people write #!/usr/bin/env python on the first line of a Python script?的可能重复 Should I put #! (shebang) in Python scripts, and what form should it take?的可能重复 【参考方案1】:
#!/usr/bin/env python

更便于移植,因为通常/usr/bin/env 程序可用于“激活”所需的命令而无需完整路径。

否则,您必须指定 Python 解释器的完整路径,该路径可能会有所不同。

因此,无论 Python 解释器是在 /usr/bin/python 还是在 /usr/local/bin/python 还是在您的主目录中,使用 #!/usr/bin/env python 都可以。

【讨论】:

太好了,谢谢。你知道 env 工作吗?它是运行完整的文件系统搜索,还是依赖某个路径文件? @AdamMatan env 在环境中使用PATH 变量,方法是查看其中的每个目录以获取给定名称的二进制文件(在本例中为python)。如果找到它,它就会执行程序。这将程序的查找与执行分离,并且由于env/usr/bin 的标准位置的许多系统上都可用,因此它更具可移植性。更好的标准化带来更好的可移植性。 如果您的脚本仅是 Python 3 并且您的目标系统可能在 PATH 中有一个 Python 2 可执行文件,那么我建议改为使用 #!/usr/bin/env python3

以上是关于Python脚本的正确shebang的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本

PHP脚本中的损坏堆

尝试在 Java 中运行多个 python 脚本

在 Python 脚本中使用 sudo

使用 ACF 输出单个页眉样式和页脚脚本

设置页脚高度后tableView的contentSize不正确