【发布时间】:2020-12-16 16:43:56
【问题描述】:
我正在尝试让 subprocess.Popen 运行 python 脚本,但我不断收到以下错误:/bin/sh: python: command not found。该脚本将 yaml 文件作为参数。不管有没有shell=True,我都试过这条线。当我在 Linux 终端中使用 python 命令运行该脚本时,它运行良好。我做错了什么?
process = subprocess.Popen(
['python', PATH_TO_PYTHON_SCRIPT, PATH_TO_CONFIG_FILE],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell=True)
with process.stdout, open(processing_log, 'ab') as f_in:
for line in iter(process.stdout.readline, b''):
f_in.write(line)
【问题讨论】:
-
当您使用 python 可执行文件的完整路径而不仅仅是“python”时它是否有效?即尝试
Popen(['/path/to/python.exe', PATH_TO_PYTHON_SCRIPT, ...和shell=False。那样有用吗?它可能暗示核心问题是什么。你可以通过在你的linux终端运行which python找到可执行文件的绝对路径 -
如果您使用
shell=True运行,这将永远起作用,因为除了第一个参数 (python) 之外的所有参数都将被忽略。请注意,python不在您的PATH中,这是一个完全不同的问题。 -
啊,使用 python exe 的完整路径运行它。 Python 一定不是我想的那样。谢谢!
标签: python subprocess popen