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如何更新到最高版本

pip install报错,“Consider using the `--user` option or check the permissions”

ModuleNotFoundError:没有名为“键盘”的模块,尝试过 pip3 安装,尝试过 -pip list 它在那里