web-dev-qa-db-ja.com

pipはrequirements.txtからパッケージをインストールできません

要件ファイルを使用してpythonソフトウェアをインストールしようとしています。

>> cat requirements.txt
Cython==0.15.1
numpy==1.6.1
distribute==0.6.24
logilab-astng==0.23.1logilab-common==0.57.1
netaddr==0.7.6
numexpr==2.0.1
ply==2.5
pycallgraph==0.5.1
pyflowtools==0.3.4.1
pylint==0.25.1
tables==2.3.1
wsgiref==0.1.2

だから私は仮想環境を作成します

>> mkvirtualenv parser

(parser)
>> pip freeze
distribute==0.6.24
wsgiref==0.1.2

(parser)
>> pip install -r requirements.txt

...次に、パッケージをダウンロードしましたが、エラーが発生してインストールされませんでした: http://pastie.org/40798

(parser)
>> pip freeze
distribute==0.6.24
wsgiref==0.1.2

驚いたことに、各パッケージを手動でインストールしようとすると、問題なくインストールされます。例えば:

>> pip install numpy==1.6.1

(parser)
>> pip freeze
distribute==0.6.24
wsgiref==0.1.2
numpy==1.6.1

迷っています。何が起こっている?

PS:私はpipv1.1とpythonv2.7.2をvirtualenvvirtualenvwrapperとともに使用しています

19
Vaibhav Bajpai

numexprパッケージのインストール時はnumpyに依存しているようです。 Pipは、要件を2回通過します。最初にすべてのパッケージをダウンロードし、それぞれのsetup.pyを実行してメタデータを取得し、次に2回目のパスですべてをインストールします。

そのため、numexprはsetup.pyのnumpyからインポートしようとしていますが、pipが最初にnumexprのsetup.pyを実行したとき、まだnumpyがインストールされていません。

これが、パッケージを1つずつインストールするときにこのエラーが表示されない理由でもあります。一度に1つずつインストールすると、pip installnumexprの前にnumpyが環境に完全にインストールされます。

唯一の解決策は、pip install numpyを実行する前にpip install -r requirements.txtをインストールすることです。これは、単一のrequirements.txtファイルを使用して単一のコマンドで実行することはできません。

詳細はこちら: https://github.com/pypa/pip/issues/25

17
ejucovy