要件ファイルを使用して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:私はpip
v1.1とpython
v2.7.2をvirtualenv
とvirtualenvwrapper
とともに使用しています
numexpr
パッケージのインストール時はnumpyに依存しているようです。 Pipは、要件を2回通過します。最初にすべてのパッケージをダウンロードし、それぞれのsetup.py
を実行してメタデータを取得し、次に2回目のパスですべてをインストールします。
そのため、numexprはsetup.pyのnumpyからインポートしようとしていますが、pipが最初にnumexprのsetup.pyを実行したとき、まだnumpyがインストールされていません。
これが、パッケージを1つずつインストールするときにこのエラーが表示されない理由でもあります。一度に1つずつインストールすると、pip install
numexprの前にnumpyが環境に完全にインストールされます。
唯一の解決策は、pip install numpy
を実行する前にpip install -r requirements.txt
をインストールすることです。これは、単一のrequirements.txtファイルを使用して単一のコマンドで実行することはできません。