【问题标题】:Pip Install -r continue past installs that failPip Install -r continue 过去失败的安装
【发布时间】:2011-09-21 09:59:17
【问题描述】:

我正在使用命令安装带有 pip-python 的软件包列表

pip install -r requirements.txt

有时无论出于何种原因,它都无法安装软件包。即使出现这些故障,是否可以让它继续下一个包?

【问题讨论】:

    标签: python installation pip


    【解决方案1】:

    我也有同样的问题。 继续@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,而不是为所有包运行一次,所以每次启动时间都会累积。请注意,这个解决方案并不“聪明”,但它适用于快速和肮脏的时刻。我会建议修复失败的依赖关系!
    • 这很好,谢谢
    【解决方案2】:

    您可以编写一个小包装脚本来迭代调用 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',见stackoverflow.com/a/49853826/1878788
    【解决方案3】:

    在 Windows 命令提示符/cmd:

    # For each package,p, in requirements.txt, pip install package
    FOR /F %p IN (requirements.txt) DO pip install %p
    

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2014-09-07
      • 2018-10-23
      • 2014-11-04
      相关资源
      最近更新 更多