27

要件ファイルを使用して 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/4079800

(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 を使用しvirtualenvています。virtualenvwrapper

4

3 に答える 3

22

numexprパッケージには、numpy へのインストール時の依存関係があるようです。Pip は要件に対して 2 つのパスを作成します。最初に、すべてのパッケージをダウンロードし、それぞれを実行setup.pyしてメタデータを取得します。次に、2 番目のパスでそれらすべてをインストールします。

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

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

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

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

于 2012-06-13T13:29:10.050 に答える