1. ホーム
  2. python

[解決済み] Pythonスクリプトのヘッダー

2023-02-21 18:21:29

質問

典型的なヘッダーは

#!/usr/bin/env python

しかし、以下のようにスクリプトを実行した場合にも動作することがわかりました。 $python ./my_script.py

#!/usr/bin/python
#!python

この2つのヘッダーは何が違うのでしょうか?2番目のヘッダの問題点は何でしょうか?また、PATHにPythonインタプリタがあるかどうかの議論もお願いします。ありがとうございます。

どのように解決するのですか?

まず、以下のように明示的にインタプリタを使ってスクリプトを実行する場合は、いつでも

$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3

その #! の行は常に無視されます。 その #! 行はUnixの機能である 実行可能 スクリプトのみで、その完全なドキュメントは のマニュアルページを参照してください。 execve(2) . そこでは、以下の単語が #! は、有効な実行ファイルのパス名でなければならないことがわかります。 ですから

#!/usr/bin/env python

は何でも実行します。 python を実行します。 $PATH . この形式は、Python インタープリタが移動しても大丈夫なので、多少移植性が高くなります。 $PATH . あなたの目標によっては、この動作はOKかもしれませんし、そうでないかもしれません。

次に

#!/usr/bin/python

は、Python インタープリタが /usr/bin . もし他の場所にインストールされていたら、あなたは負けます。 しかし、これは、次のように、欲しいバージョンを正確に得るか、さもなければ全く何も得られない ("fail-stop" 動作) ことを確実にする良い方法です。

#!/usr/bin/python2.5

最後に

#!python

がある場合のみ動作します。 python がある場合のみ動作します。 推奨しません。