为什么 subprocess.check_call([sys.executable,..]) 在这里工作而 subprocess.run([...]) 不工作?

问题描述 投票:0回答:0

我正在为未连接到互联网的机器编写 python 模块的安装工具。
这个想法是首先在具有网络访问权限的机器上使用该工具,然后在本地机器上使用它。
为此,我需要从我的脚本中调用 pip 下载。我试过用这个:

subprocess.run(['py','-m','pip','download','-r','C:/.../libs/Python 3.8/requirements.txt','-d','C:/.../libs/Python 3.8','--python-version','3.8','--only-binary=:all:'])

但我只收到一个错误代码声称

the ssl module in Python is not available.

在 cmd 中使用时,上面的命令是功能性的,pip 不会抱怨 ssl。
我试图检查我在 VS code 中使用的 python 是否与 cmd 中的版本不同,但似乎并非如此。
我环顾了 stackoverflow,发现了这个答案:
https://stackoverflow.com/a/50255019/18027979 我尝试了以下方法:

subprocess.check_call([sys.executable,'-m','pip','download','-r','C:/.../libs/Python 3.8/requirements.txt','-d','C:/.../libs/Python 3.8','--python-version','3.8','--only-binary=:all:'])

仍然出现 ssl 警告和连接超时,但是库及其依赖项已成功下载。

我知道

sys.executable
arg 正在检查调用是否正在使用当前运行时的 pip,但我不确定这对我在第一个命令中遇到的问题有何帮助。 感谢您的帮助。

python pip subprocess
© www.soinside.com 2019 - 2024. All rights reserved.