PythonライブラリモジュールはPythonで開始する必要があります#!/usr/bin/env
か?
*.py
inの最初の行/usr/share/pyshared
(PythonライブラリがDebianに保存されている場所)を見ると、hashbang行で始まるファイルとそうでないファイルの両方があることがわかります。
この行を含めるまたは省略する理由はありますか?
PythonライブラリモジュールはPythonで開始する必要があります#!/usr/bin/env
か?
*.py
inの最初の行/usr/share/pyshared
(PythonライブラリがDebianに保存されている場所)を見ると、hashbang行で始まるファイルとそうでないファイルの両方があることがわかります。
この行を含めるまたは省略する理由はありますか?
の一部のファイルがシェバンを宣言している理由と、一部のファイルが/usr/share/pyshared
説明しにくい理由。ファイルuno.py
とを取りますpyinotify.py
。前者にはシバンがなく、後者にはシバンがあります。
uno.py
は、他のプログラム/スクリプトにインポートされて使用されるPythonモジュールです。したがって、コマンドラインから直接実行されることはありません。一方pyinotify.py
、シバンが含まれており、下部に次の行が含まれていることがわかります(実行すると実行可能ファイルchmod u+x
になります)。
if __name__ == '__main__':
command_line()
シバンでPythonバイナリをハードコーディングできますが、他の人が述べているように、を使用/usr/bin/env
すると移植性が向上します。
このラインはシバンラインです。詳細については、ウィキペディアの記事を参照してください。基本的には、コマンドラインから直接実行した場合にファイルを実行できるインタープリターを指定します。
シェルから直接実行する場合を除いて、ファイルの先頭にこの行を含める必要はありません。一部のPythonモジュール(例:ftplib)は、直接実行するといくつかの機能を備えています。これらは#!
上に線があります。ほとんどはそのような機能を持っていないので、この行は必要ありません。
スクリプトを実行可能にする場合は、この行を含める必要があります