繁体   English   中英

pip 无法从 requirements.txt 安装包

[英]pip fails to install packages from 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/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:我正在使用带有virtualenvvirtualenvwrapper pip v1.1 和python v2.7.2

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

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

这也是为什么你一一安装包时没有看到这个错误的原因:如果你一次安装一个,那么在你pip install numexpr之前,numpy会完全安装在你的环境中。

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

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

我遇到了类似的问题,结果如下:

cat requirements.txt | sed -e '/^\s*#.*$/d' -e '/^\s*$/d' | xargs -n 1 python -m pip install

这将逐行读取 requirements.txt 并执行 pip。 我无法从哪里找到正确的答案,因此对此深表歉意,但我在下面找到了一些理由:

  1. sed 的工作原理: https : //howto.lintel.in/truncate-empty-lines-using-sed/
  2. 另一个类似的答案,但使用 git: https : //stackoverflow.com/a/46494462/7127519

希望这有助于替代方案。

这有时很烦人,是 pip 的错误。 当您运行 pip install package_name 时,pip 将首先对目标包运行 pip check,并安装依赖项(目标包)所需的所有包。 但是当你运行 pip install -r requirements.txt 时,pip 会尝试直接安装所有需要的包,从上到下一一列出。 有时依赖项列在它所依赖的包之上。

The solution is simple:
1.pip install package_name
2.simply put the error package to the bottom of the requirements.txt
3.sometimes a particular version of the package is not be able to  be installed,just install the newest version of it and update the data in requirements.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM