PIP无法从requments.txt安装软件包

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (25)

我正在尝试使用Requirements文件安装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
(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

提问于
用户回答回答于

看起来像是numexpr软件包在安装时依赖于numpy。PIP通过两次遍历您的需求:首先,它下载所有包并运行每个包的setup.py以获得其元数据,然后在第二次传递中全部安装。

因此,numexpr试图从它的setup.py中从numpy导入,但是当pip第一次运行numexpr的setup.py时,它还没有安装numpy。

这也是为什么在一个接一个地安装软件包时没有看到这个错误:如果一次安装它们,那么numpy将在之前完全安装在环境中。pip installnumexpr

唯一的解决办法是安装pip install numpy在你之前pip install -r requirements.txt--将无法在一个命令中使用单一的Requiments.txt文件来完成此操作。

扫码关注云+社区