8

Python 库模块应该以#!/usr/bin/envpython 开头吗?

查看 in 的第一行*.py/usr/share/pysharedPython 库存储在 Debian 中的位置)可以发现,既有以 hashbang 行开头的文件,也有不以 hashbang 行开头的文件。

是否有理由包括或省略这一行?

4

3 回答 3

7

中的一些文件/usr/share/pyshared声明了shebang的原因和一些不容易解释。获取文件uno.pypyinotify.py. 前者没有shebang,后者有。

  1. uno.py是一个 python 模块,将被导入并在其他程序/脚本中使用。因此它永远不会直接从命令行执行。
  2. 另一方面pyinotify.py包含shebang,您可以看到它在底部包含以下行(如果您在其上运行a chmod u+x,它可以变成可执行文件):

    if __name__ == '__main__':
        command_line()
    

您可以在 shebang 中对 python 二进制文件进行硬编码,但正如其他人所提到的,使用/usr/bin/env将使其更便携。

于 2012-03-20T08:59:03.473 回答
5

这条线是Shebang线。详情请查阅维基百科文章。基本上,它指定了直接从命令行运行文件时可以使用的解释器。

除非您打算直接从 shell 运行它,否则无需在文件顶部包含此行。一些 Python 模块(例如 ftplib)在您直接运行它们时具有一些功能。这些将#!在顶部有一行。大多数没有这样的功能,因此不需要这条线。

于 2012-03-20T08:34:04.877 回答
0

如果您希望您的脚本成为可执行文件,则必须包含此行

于 2012-03-20T08:29:16.813 回答