pip线程安全吗?

时间:2015-07-03 07:17:44

标签: python multithreading pip

我有一个构建脚本(bash),它利用python pip从远程获取需求并将其放入虚拟环境中。此构建脚本可以由另一个脚本调用,该脚本将使用任意数量的线程和不同的目标来调用它。这会导致为每次调用重新运行pip。它将尝试检查相同虚拟环境的相同要求。

这是否与pip不相容?

3 个答案:

答案 0 :(得分:0)

每次运行

pip都是浪费带宽和资源。
在virtualenv中,已安装的软件包保持安装状态。因此,您可以在存储标志的目录中设置标志或文件,检查您可以执行的标志pip。这是一个更好的解决方案。

答案 1 :(得分:0)

根据this issue,pip应该主要是线程安全的,除非更新时存储库状态发生变化。

答案 2 :(得分:0)

由于此次讨论是Google首次曝光:pip不应被视为线程安全。另外,如果你没有在导入xthe pip包的线程中运行pip.main(),那么在pip中调用pip时可能会导致异常。

运行pip.main()也不是受支持的API。唯一推荐的方法是从subprocess.Popen()或类似的方式调用pip。

此处有更多详情: https://github.com/pypa/pip/issues/3889