在Python子进程中调用pip时发生FileNotFoundError

时间:2019-11-20 10:17:08

标签: python shell subprocess popen

我需要运行一些从python脚本调用pip的命令。 Pip已安装在我的计算机上(正在运行Ubuntu)。只需在终端中输入“ pip”即可输出pip命令的帮助。

但是,尝试从python脚本调用pip会引发错误。 从脚本中调用其他命令(例如“ ls”)可以按预期工作(打印在终端中输入命令后得到的输出)。

对于为什么它不起作用,我似乎没有任何进展,因此,我们将不胜感激。下方的MWE:

import subprocess

# Prints list of files in cwd
subprocess.Popen(["ls"])

# FileNotFoundError: [Errno 2] No such file or directory: 'pip': 'pip'
subprocess.Popen(["pip"])

编辑:与我在提示符下运行命令时相比,用Popen调用的命令通常表现出不同的行为。 例如,运行“ python --version”显示Python 3.7.4,但如果执行subprocess.Popen(["python", "--version"]) 我得到Python 2.7.15 +。

1 个答案:

答案 0 :(得分:0)

我还没有在Ubuntu上尝试过,但是在Windows上有类似的经验。

以下工作吗?

subprocess.Popen(["python"])

如果是这样,您可以尝试

subprocess.Popen(["python", "m", "pip", "list"])

# or my case on windows
subprocess.Popen(["C:\Python27\ArcGIS10.5\python.exe", "-m", "pip", "list"]