pip线程安全吗?
Is pip Thread Safe?
我有一个构建脚本 (bash) 利用 python pip
从远程获取需求并将其放入虚拟环境中。这个构建脚本可以被另一个脚本调用,该脚本将使用任意数量的线程和不同的目标调用它。这会导致 pip 每次调用都重新 运行。它将尝试检查相同虚拟环境的相同要求。
这会与 pip
不兼容吗?
pip
每次都是 运行 是对带宽和资源的浪费。
在 virtualenv 中,已安装的软件包保持安装状态。因此,您可以在存储标志的目录中设置标志或文件,在检查标志时,您可以执行 pip
或不执行。这是一个更好的解决方案。
根据 this issue,pip 应该主要是线程安全的,除非存储库状态在更新时发生变化。
由于此讨论是 google 上的第一篇文章:pip 不应被视为线程安全的。另外,如果您不在导入 xthe pip 包的线程中 运行 pip.main()
,那么在从线程中调用 pip 时,pip 中有一个错误可能会导致异常。
运行 pip.main()
也不支持 API。唯一推荐的方法是从 subprocess.Popen()
或类似的方法调用 pip。
我有一个构建脚本 (bash) 利用 python pip
从远程获取需求并将其放入虚拟环境中。这个构建脚本可以被另一个脚本调用,该脚本将使用任意数量的线程和不同的目标调用它。这会导致 pip 每次调用都重新 运行。它将尝试检查相同虚拟环境的相同要求。
这会与 pip
不兼容吗?
pip
每次都是 运行 是对带宽和资源的浪费。
在 virtualenv 中,已安装的软件包保持安装状态。因此,您可以在存储标志的目录中设置标志或文件,在检查标志时,您可以执行 pip
或不执行。这是一个更好的解决方案。
根据 this issue,pip 应该主要是线程安全的,除非存储库状态在更新时发生变化。
由于此讨论是 google 上的第一篇文章:pip 不应被视为线程安全的。另外,如果您不在导入 xthe pip 包的线程中 运行 pip.main()
,那么在从线程中调用 pip 时,pip 中有一个错误可能会导致异常。
运行 pip.main()
也不支持 API。唯一推荐的方法是从 subprocess.Popen()
或类似的方法调用 pip。