pip无法从requirements.txt安装软件包

时间:2023-01-12 18:56:44

I am trying to install a python software using the requirements file.

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

So I create a virtual environment

所以我创建了一个虚拟环境

>> mkvirtualenv parser

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

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

... and then I packages downloaded but not installed with errors: http://pastie.org/4079800

...然后我下载了包但没有安装错误:http://pastie.org/4079800

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

Surprisingly, if I try to manually install each package, they install just fine. For instance:

令人惊讶的是,如果我尝试手动安装每个包,他们安装就好了。例如:

>> pip install numpy==1.6.1

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

I am lost. What is going on?

我搞不清楚了。到底是怎么回事?

PS: I am using pip v1.1 and python v2.7.2 with virtualenv and virtualenvwrapper

PS:我正在使用pip v1.1和python v2.7.2与virtualenv和virtualenvwrapper

1 个解决方案

#1


16  

It looks like the numexpr package has an install-time dependency on numpy. Pip makes two passes through your requirements: first it downloads all packages and runs each one's setup.py to get its metadata, and then it installs them all in a second pass.

看起来,numexpr包对numpy有一个安装时依赖。 Pip通过您的要求两次:首先它下载所有软件包并运行每个软件包以获取其元数据,然后在第二次传递中安装所有软件包。

So, numexpr is trying to import from numpy in its setup.py, but when pip first runs numexpr's setup.py, it has not yet installed numpy.

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

This is also why you don't see this error when you install the packages one by one: if you install them one at a time, numpy will be fully installed in your environment before you pip install numexpr.

这也是您在逐个安装软件包时没有看到此错误的原因:如果您一次安装一个软件包,那么在您安装numexpr之前,numpy将完全安装在您的环境中。

The only solution is to install pip install numpy before you ever run pip install -r requirements.txt -- you won't be able to do this in a single command with a single requirements.txt file.

唯一的解决方案是在运行pip install -r requirements.txt之前安装pip install numpy - 您将无法在具有单个requirements.txt文件的单个命令中执行此操作。

More info here: https://github.com/pypa/pip/issues/25

更多信息:https://github.com/pypa/pip/issues/25

#1


16  

It looks like the numexpr package has an install-time dependency on numpy. Pip makes two passes through your requirements: first it downloads all packages and runs each one's setup.py to get its metadata, and then it installs them all in a second pass.

看起来,numexpr包对numpy有一个安装时依赖。 Pip通过您的要求两次:首先它下载所有软件包并运行每个软件包以获取其元数据,然后在第二次传递中安装所有软件包。

So, numexpr is trying to import from numpy in its setup.py, but when pip first runs numexpr's setup.py, it has not yet installed numpy.

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

This is also why you don't see this error when you install the packages one by one: if you install them one at a time, numpy will be fully installed in your environment before you pip install numexpr.

这也是您在逐个安装软件包时没有看到此错误的原因:如果您一次安装一个软件包,那么在您安装numexpr之前,numpy将完全安装在您的环境中。

The only solution is to install pip install numpy before you ever run pip install -r requirements.txt -- you won't be able to do this in a single command with a single requirements.txt file.

唯一的解决方案是在运行pip install -r requirements.txt之前安装pip install numpy - 您将无法在具有单个requirements.txt文件的单个命令中执行此操作。

More info here: https://github.com/pypa/pip/issues/25

更多信息:https://github.com/pypa/pip/issues/25