pip 无法从 requirements.txt 安装软件包
Posted
技术标签:
【中文标题】pip 无法从 requirements.txt 安装软件包【英文标题】:pip fails to install packages from requirements.txt 【发布时间】:2012-06-16 11:00:37 【问题描述】:我正在尝试使用需求文件安装 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:我正在使用pip
v1.1 和python
v2.7.2 与virtualenv
和virtualenvwrapper
【问题讨论】:
我遇到了与 shap 相同的问题 【参考方案1】:看起来numexpr
包在安装时依赖于 numpy。 Pip 两次通过您的要求:首先下载所有包并运行每个包的 setup.py
以获取其元数据,然后在第二次通过安装它们。
所以,numexpr 是在它的 setup.py 中尝试从 numpy 导入,但是当 pip 第一次运行 numexpr 的 setup.py 时,它还没有安装 numpy。
这也是你一个个安装包时看不到这个错误的原因:如果你一次安装一个,numpy会在你pip install
numexpr之前完全安装在你的环境中。
唯一的解决方案是在运行 pip install -r requirements.txt
之前安装 pip install numpy
-- 您将无法在单个命令中使用单个 requirements.txt 文件来执行此操作。
更多信息在这里:https://github.com/pypa/pip/issues/25
【讨论】:
这看起来像是 numexpr 中的一个打包错误;如果您实际构建它,则应将其 setup.py 修改为仅从 numpy 导入,例如如果您只是在运行setup.py egg_info
,则通过捕获ImportError
并在没有extra_setup_opts
的情况下继续。
我们(pip)可能应该有一个关于这个的指南,或者至少链接到现有的文档。
你应该用 numexpr file an issue【参考方案2】:
我遇到了类似的问题,结果如下:
cat requirements.txt | sed -e '/^\s*#.*$/d' -e '/^\s*$/d' | xargs -n 1 python -m pip install
这将逐行读取 requirements.txt 并执行 pip。我无法从哪里找到正确的答案,因此对此深表歉意,但我在下面找到了一些理由:
-
sed 的工作原理:https://howto.lintel.in/truncate-empty-lines-using-sed/
另一个类似的答案,但使用 git:https://***.com/a/46494462/7127519
希望这对替代方案有所帮助。
【讨论】:
【参考方案3】:这有时很烦人,一个 pip 的错误。 当您运行 pip install package_name 时,pip 将首先对目标包运行 pip 检查,并安装依赖项(目标包)所需的所有包。 但是当你运行 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
【讨论】:
以上是关于pip 无法从 requirements.txt 安装软件包的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 pip install requirements.txt 安装 [关闭]
使用 pip 命令从 requirements.txt 升级 python 包
AWS Elastic Beanstalk 无法使用 requirements.txt Git Pip 安装 Python 包