誰でも知っていますか?私は決して答えを見つけることができませんでした。「#!/ usr/bin/env python」は、単に「#!/ usr/bin/python」よりも正しいと思われるのはなぜですか?
答えて
(典型的なUnixシェルの$PATH
のように、/usr/bin/env
を使用すると、/usr/bin/python
に直接行く間にあなたの気まぐれを(よく、Unixのような環境で)調整できます。しかし、あなたのスクリプトが実行されるPythonのバージョンのコントロールを失うことは、あまり価値のないものではありません。私のコードを見れば、開いて受け入れるのではなく、#!/usr/local/bin/python2.5
で始まる可能性が高くなります。#!/usr/bin/env python
- スクリプトは重要です。テストして開発した特定のバージョンで実行されていることを確認したいのですが、セミランダムではありません;-)。
もちろん、#!/ usr/bin/env python2.5を使用してセミランダムな選択肢のセットを制約することができます:=) –
+1すばらしい説明、ありがとう!私は以前に "env"という使い方を見ていませんでした...今、私はスクリプトのbag-of-tricksに何か追加します。 –
"env python"を使用しないことを正当化するため+1。私が "env python"を使いたいのであれば、ユーザーがPATHに最初に持っているPythonのバージョンを制御することはできないので、最低の共通分母をコーディングする方がよいでしょう。 –
これは、/ usr/local/bin、〜/ bin、/ opt/bin、...またはそれが隠れる可能性のある場所でも 'python'を検出します。
ありがとう!何らかの理由でenvが存在しなかったので、実際には私にとって問題を引き起こしました。 –
これは少し誤解を招くことです。あなたの現在の$ PATH上の最初の "python"と、OS X上のPythonインスタンスが隠れていることはかなりわかります。特に、標準フレームワークはpython.orgから構築され、他のものは、 "python"やその他の実行可能ファイルとスクリプトが格納されているフレームワーク内に "bin"サブディレクトリを持っています。/usr/local/binなどの通常の場所でシンボリックリンクを持っているかもしれないし、持っていないかもしれない複数のインスタンスで終わるのはとても簡単です。この場合のOS Xでの$ PATHの管理は、フレームワークスタイルのビルドがないシステムほど簡単ではありません。 –
@KennethReitz: '/ usr/bin/env'が存在しない場合、システムは壊れています。 'env'はPOSIX標準で必要なツールです。 – MestreLion
あなたは興味のあることをこのポストを見つけることがあります。 http://mail.python.org/pipermail/python-list/2008-May/661514.html
これは良く説明することがあります。あなたはあなたのPATH上のさまざまな興味深い場所でのpythonをインストールしやすいなら http://mail.python.org/pipermail/tutor/2007-June/054816.html
Shebangsからシステム実行可能ファイルの絶対パスを指定します。これは非標準のファイルシステムレイアウトが
多くの場合、プログラムは/ usr/binに/ ENVは、それがでPythonの実行可能ファイルを見つけ、この 制限
を回避するために使用することができているシステムで 問題を引き起こす可能性がありますあなたのそれを使用しています。なぜなら、Pythonは常に/ usr/bin/pythonにあるとは限らないからです。 envは常に/ usr/binにあります。
envは常に存在するとは限りませんが、より多くのマシンでPythonを見つける可能性が増しています。 :) – Will
- 1. なぜ簡単な意思決定ツリーよりも1つの見積もりが速いのですか?
- 2. なぜ、mysqlは何もないと思われるときに構文エラーを表示しますか?
- 3. redis Geo distance(GEODIST)が正確ではないと思われる
- 4. なぜクランはもっと使われないのですか?
- 5. SQLクエリに関して遅いと思われるものは何ですか?
- 6. なぜタプルはPythonのリストよりも大きいですか?
- 7. シグナルとスロットは単純な古いコールバックよりも優れているのはなぜですか?
- 8. なぜKNNは意思決定ツリーよりもずっと高速ですか?
- 9. AppceleratorのAndroidのは、単純な誤りであると思われるものを取得
- 10. NoSQLがNode.jsでRDBMSよりもはるかに多く使われているのはなぜですか?
- 11. JQuery DatePicker constrainInput:正常に動作しないと思われる
- 12. ゼロ詰めが正しく行われていないと思われる
- 13. Visual Studioで正しいSQL構文が正しくないと思われる
- 14. PythonでPythonインタープリタよりもコードが遅いのはなぜですか?
- 15. なぜPython 3のhttp.clientはPythonリクエストよりもずっと高速ですか?
- 16. PostgresのRailsのこれはそれがあるべきよりも難しいと思われる注文
- 17. MySQLでmax_connectionsを高い値に設定するのが悪いと思われるのはなぜですか?
- 18. STRの比較は実際にはどのようにPythonで機能しますか?私のコードは正しいと思われますが、Pythonはさまざまなユーザー入力にもかかわらず制御変数を変更しません
- 19. Android正規表現が動作しないと思われる
- 20. なぜnumpy.apply_along_axisがPythonループよりも遅いようですか?
- 21. NetBeans 6.7 Beta - 特定のテーブルにプライマリキーがないと思われるのはなぜですか?
- 22. は...それはよりもずっと簡単でなければなりませんように。これは思える円グラフ
- 23. なぜ\はPythonのprintステートメントの終わりに使われますか?
- 24. ウェブサイトはブラウザによって異なると思われますか?なぜ人々は気にしないのですか?
- 25. なぜ(非常に単純な)ベクトル化されたコードのオーダーは、Numpyよりも遅いのですか?
- 26. ローカル変数アクセスがPythonのクラスメンバーアクセスよりも速いのはなぜですか?
- 27. kerasはsklearnよりも遅いのはなぜですか?
- 28. originはgitリポジトリではないと思われます
- 29. Pythonロギングフレームワークでメッセージが失われるのはなぜですか?
- 30. なぜpはPよりも大きいのですか?
トンではありません。私はOSX上にあり、envのマンページはかなり曖昧です。 –
@ S.Lott:最近読んだことがありますか?私のDebianボックスでは、これまでに見た中で最も役に立たないmanページの一つです。それは何かを言っています。 (ここでは、「説明」全体があります:環境内の各NAMEをVALUEに設定し、COMMANDを実行してください)。 – Telemachus
@Telemachus:はい、私はそれを読んだことがあります。ウィキペディアのエントリーを見つけたのはそのためです。 –