Pip Install -r continue 过去失败的安装
Posted
技术标签:
【中文标题】Pip Install -r continue 过去失败的安装【英文标题】:Pip Install -r continue past installs that fail 【发布时间】:2011-09-21 09:59:17 【问题描述】:我正在使用命令安装带有 pip-python 的软件包列表
pip install -r requirements.txt
有时无论出于何种原因,它都无法安装软件包。即使出现这些故障,是否可以让它继续下一个包?
【问题讨论】:
【参考方案1】:您可以编写一个小包装脚本来迭代调用 pip,例如:
#!/usr/bin/env python
"""
pipreqs.py: run ``pip install`` iteratively over a requirements file.
"""
def main(argv):
try:
filename = argv.pop(0)
except IndexError:
print("usage: pipreqs.py REQ_FILE [PIP_ARGS]")
else:
import pip
retcode = 0
with open(filename, 'r') as f:
for line in f:
pipcode = pip.main(['install', line.strip()] + argv)
retcode = retcode or pipcode
return retcode
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv[1:]))
你可以打电话给pipreqs.py requirements.txt --some --other --pip --args
。
请注意,这仅适用于“尽管失败仍继续”的座右铭——如果 pip 无法安装所列内容的子需求,那么当然父需求仍然会失败。
【讨论】:
谢谢,这似乎有效。但是有一个烦人的副作用:来自 pip 的日志消息似乎重复(和三次等),需求文件中列出的包越多。这可能是一个记录器实例化问题。 如果是AttributeError: 'module' object has no attribute 'main'
,请参阅***.com/a/49853826/1878788【参考方案2】:
我也有同样的问题。 继续@Greg Haskins 的路线,也许这个 bash 单线更简洁:
cat requirements.txt | while read PACKAGE; do pip install "$PACKAGE"; done
# TODO: extend to make the script print a list of failed installs,
# so we can retry them.
(对于非 shellscripters:它为每个列出的包调用 pip install
)
关于依赖项失败的相同说明当然也适用于此!
【讨论】:
TODO 部分完成了吗?为什么它的运行速度比pip install -r requiremnets.txt
慢?
TODO 从未实现。它比较慢,因为它为每个包运行 pip,而不是为所有包运行一次,所以每次启动时间都会累积。请注意,这个解决方案并不“聪明”,但它适用于快速和肮脏的时刻。我建议修复失败的依赖关系!
这很好,谢谢【参考方案3】:
在 Windows 命令提示符/cmd:
# For each package,p, in requirements.txt, pip install package
FOR /F %p IN (requirements.txt) DO pip install %p
【讨论】:
以上是关于Pip Install -r continue 过去失败的安装的主要内容,如果未能解决你的问题,请参考以下文章
使用 pip、easy_install、manual 安装 PyObjc 时遇到问题
python 安装模块之pip install +模块名的换源写法
pip install scipy on virtualenv 错误 RHEL6.5
pip install报错,“Consider using the `--user` option or check the permissions”
ModuleNotFoundError:没有名为“键盘”的模块,尝试过 pip3 安装,尝试过 -pip list 它在那里