2017-01-17 5 views
0

を動作していないよう:私PYTHONPATHのenvが、私は自分のコンピュータ(MAC)のピップをインストールして、私はこれらを試してみました

$export PYTHONPATH=/usr/local/lib/python2.7/site-packages/pip 
$python pip freeze list 
/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'pip': [Errno 2] No such file or directory 

それは動作しませんが、私はには、この完全なパスを指定した場合Pythonコマンド、それは動作します:

$python /usr/local/lib/python2.7/site-packages/pip freeze list 
ant==0.1.0 
appnope==0.1.0 
astroid==1.4.8 
backports-abc==0.5 
........ 

なぜですか?

+1

なぜPYTHONPATHを変更していますか? –

+0

PYTHONPATHは、Pythonインタプリタが 'import'文の参照を解決する方法に影響を与えます。どのPythonインタプリタが関与するか、シェルが実行可能ファイルへの参照を解決する方法( 'pip'スクリプトなど)には影響しません。私は、Pythonの「インポート」セマンティクスは、Pythonの長年の経験を経てもほとんどの人が理解するようにかなり複雑になっていることが分かりました。ここにいくつかのヒントがあります:http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html –

答えて

1

ください。 python pipで実行したり、$PYTHONPATHを調整したりする必要はありません。

最初のスニペットのエラーは、Pythonをどのように呼び出すかと関係があります。あなたのコマンドはpython <script-filename> [script-arguments ...]と解釈されます。あなたが渡しているファイル名はpipなので、pythonは現在のディレクトリで "pip"という名前のファイルを探します。そのファイルは存在しないので、pythonは "ファイルが見つかりません"というエラーでクラッシュします。

python <full-path-to-script>が原因で...まあ、どうでしょうか? Pythonはスクリプトを見つけて実行します。

1

コメントで指摘したように、PYTHONPATHを混乱させたくありません。同じコンピュータに異なるバージョンのPythonをインストールしたい場合や、インストールされているパッケージ(またはモジュール)が異なるPythonインストールを使用する場合は、virtualenv

新しいvirtualenvを作成します。

virtualenv /usr/local/custom-python/ 

、あなたは、それを使用するか、またはそれにパッケージをインストールしたい時はいつでもそしてちょうど十分なものでなければならない直接pip freezeを実行

source /usr/local/custom-python/bin/activate 
1

お試しください: $export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages まず、お使いのコードは、廃止予定のorignal PYTHONPATHをカバーしている可能性があります。第2に、pipはpythonのパスに含めないでください.pipはパッケージに含める必要があるからです。

python /your/path/to/pipこのピップは、__init__.pyがあるフォルダです。だから、Pythonはそれを読むことができます。しかし、pipフォルダにPYTHONPATHを直接定義すると、Pythonはこれを見つけられません。__init__.pyはpipを表します(Python import packgeのドキュメントを参照してください)

さらに、バイナリピップ(/ usr/binにあります)をあなたのパスに直接電話することができます$ pip command

関連する問題