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

Mis*_*iev 8 python coding-style shebang

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

查看*.pyin的第一行/usr/share/pyshared(其中Python库存储在Debian中)显示存在以hashbang行开头的文件和不使用hashbang行的文件.

是否有理由包含或省略此行?

can*_*dry 7

之前有些文件/usr/share/pyshared已经声明了shebang而有些文件并不容易解释.拿文件uno.pypyinotify.py.前者没有shebang而后者没有.

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

    if __name__ == '__main__':
        command_line()
    
    Run Code Online (Sandbox Code Playgroud)

你可以在shebang中对python二进制文件进行硬编码,但正如其他人所提到的,使用/usr/bin/env它会使它更具可移植性.


Nou*_*him 5

这条线是Shebang线.有关详细信息,请参阅维基百科文章.基本上,它指定了解释器,如果直接从命令行运行,则可以使用该解释器执行该文件.

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