2016-11-03 13 views
0

私はOSX Yosemiteを実行しているマシンを持っています(これはOSXのいくつかのバージョンで違いがあります)。OSXがなぜpythonを実行していないのですか?

私は、Python、すなわち

./Myscript.py 

または私は

を入力する場合は、明示、今のpython

python Myscript.py 

を呼び出すことにより、スクリプトを直接実行されたかどうかに応じてライブラリをインポートすることができるかどうかでanomily気づきました

$whereis python 
/usr/bin/python 

スクリプト内の私のシバンラインは

です
#!/usr/bin/python 

私は、同じバージョンのpythonがどちらの場合でも実行されていると仮定しました。

しかし、調査した後、私は

$python --version 
Python 2.7.6 
$/usr/bin/python --version 
Python 2.7.10 

を見つけるので、実行されているのpythonは私がwhereisは

を行うとき、誰もがこの上でいくつかの光を当てるてくださいすることができ得るものではないように思われ、それを修正する方法を明確にしますか?私は本当に両方の場合で2.7.10を実行したいのですが、ライブラリをインストールすると2.7.6になりますが、スクリプトを実行すると2.7.10が実行され、ライブラリは表示されません。

おかげ

ジョン

+2

'whereis'ではなく' which python'を使うべきです。 –

+0

ありがとう、少なくとも正しいバージョンを示しています.. –

答えて

4

あなたPATH環境変数を無視するコマンドwhereisを、使用しないでください。マンページから:

whereisユーティリティは、それが見つかったのパスをプリントアウト、標準のバイナリディレクトリを指定したプログラムのをチェックします。

強調鉱山。

「非標準」バイナリディレクトリを含むPATH環境変数があります。 whichユーティリティは、コマンド名のリストを受け取り、パスを検索し

$ which python 

which

は、あなたの現在のシェルの設定に使用 実際のバイナリを提供します:pythonはどこから来るのかを見つけるためにwhichを使用して、これらのコマンドが実際に呼び出された場合に実行される各実行可能ファイルに対して実行されます。

あなたはコマンドのすべての補完候補を見つけるためにwhich -aを使用することができます。

$ which -a python 

はまた、スーパーユーザーに“whereis” and “which” return different paths in Mac OS Xを参照してください。

デモ:

$ PATH=/opt/homebrew/bin:$PATH whereis python 
/usr/bin/python 
$ PATH=/opt/homebrew/bin:$PATH which -a python 
/opt/homebrew/bin/python 
/usr/bin/python 

そうでも、私の自作ディレクトリを指す明示的PATHでは、whereisはそれを無視します。 whichはそれを見つけて最初にリストします(-a引数により、より多くのオプションが検索されます)。

+0

ありがとう、それは事をはるかに明確にします –

関連する問題