Pip安装-r跳过失败的安装继续执行

32 投票
4 回答
19251 浏览
提问于 2025-04-16 20:10

我正在用pip-python安装一系列软件包,使用的命令是

pip install -r requirements.txt

有时候安装软件包会因为某些原因失败。有没有办法让它在遇到这些失败时继续安装下一个软件包呢?

4 个回答

11

在Windows的命令提示符/命令行中:

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

我也遇到同样的问题。
接着@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.

(对于不熟悉shell脚本的人来说:它会对每个列出的包执行pip install命令)

当然,这里也同样适用关于依赖失败的注意事项!

19

你可以写一个小脚本来循环调用 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 无法安装某个列出的依赖项的子依赖项,那么当然,父依赖项也会失败。

撰写回答