Python 库模块应该以#!/usr/bin/env
python 开头吗?
查看 in 的第一行*.py
(/usr/share/pyshared
Python 库存储在 Debian 中的位置)可以发现,既有以 hashbang 行开头的文件,也有不以 hashbang 行开头的文件。
是否有理由包括或省略这一行?
Python 库模块应该以#!/usr/bin/env
python 开头吗?
查看 in 的第一行*.py
(/usr/share/pyshared
Python 库存储在 Debian 中的位置)可以发现,既有以 hashbang 行开头的文件,也有不以 hashbang 行开头的文件。
是否有理由包括或省略这一行?
中的一些文件/usr/share/pyshared
声明了shebang的原因和一些不容易解释。获取文件uno.py
和pyinotify.py
. 前者没有shebang,后者有。
uno.py
是一个 python 模块,将被导入并在其他程序/脚本中使用。因此它永远不会直接从命令行执行。另一方面pyinotify.py
包含shebang,您可以看到它在底部包含以下行(如果您在其上运行a chmod u+x
,它可以变成可执行文件):
if __name__ == '__main__':
command_line()
您可以在 shebang 中对 python 二进制文件进行硬编码,但正如其他人所提到的,使用/usr/bin/env
将使其更便携。
这条线是Shebang线。详情请查阅维基百科文章。基本上,它指定了直接从命令行运行文件时可以使用的解释器。
除非您打算直接从 shell 运行它,否则无需在文件顶部包含此行。一些 Python 模块(例如 ftplib)在您直接运行它们时具有一些功能。这些将#!
在顶部有一行。大多数没有这样的功能,因此不需要这条线。
如果您希望您的脚本成为可执行文件,则必须包含此行