gpt4 book ai didi

python - 我应该使用 pip.main() 还是 subprocess.call() 来调用 pip 命令?

转载 作者:太空狗 更新时间:2023-10-29 20:17:57 25 4
gpt4 key购买 nike

我正在编写一个需要使用 pip 安装依赖项的程序。正确的做法是什么?为什么?

理想情况下,它需要与平台无关,但该程序将在 Linux 机器上运行。

方法一:pip.main()

import pip
args = ['param1', 'param2']
version = 0.1
package = ['some_package=={}'.format(version)]
pip.main(['install'] + args + package)

方法二:subprocess.call()

import subprocess
import sys
version = 0.1
package = 'some_package'

subprocess.call([sys.executable, '-m', 'pip', 'install', '{}=={}'.format(package, version)])

最佳答案

一般情况

不要调用别人的 main() 除非你想给他们进程的所有权。例如,它们可以调用 sys.exit()os.exec*() 函数之一。他们还可以安装信号处理程序、更改 umask 或对您的进程状态进行各种其他全局更改。如果您不希望他们做这样的事情,您应该改为在子进程中运行他们的代码。

(当然,库代码可以同样轻松地完成上述所有操作,但如果不记录就这样做被认为是“粗鲁的”,而 main() 函数的作者通常假设他们拥有自己的整个过程。)

特别是对于 Pip

pip.main() is not a public interface ,不受支持。使用子流程。

关于python - 我应该使用 pip.main() 还是 subprocess.call() 来调用 pip 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47059526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com