web-dev-qa-db-ja.com

Pythonスクリプトの適切なシバン

私は通常、Pythonスクリプトで次のShebang宣言を使用しています。

#!/usr/bin/python

最近、私はこのシバン宣言に出くわしました:

#!/usr/bin/env python

スクリプトのドキュメントでは、このフォームを使用する方が「移植性が高い」ことに注意してください。

この宣言はどういう意味ですか?パスの中央にスペースがあるのはなぜですか?実際に収益性に貢献していますか?

53
Adam Matan
#!/usr/bin/env python

一般に、プログラム/usr/bin/envを使用すると、フルパスなしで目的のコマンドを「アクティブ化」できるため、移植性が向上します。

それ以外の場合は、Pythonインタープリターのフルパスを指定する必要がありますが、これは異なる場合があります。

したがって、Pythonインタープリターが/usr/bin/pythonまたは/usr/local/bin/pythonまたはホームディレクトリにあったとしても、#!/usr/bin/env pythonを使用すると機能します。

67
jh314