使用“pexpect”时在子进程中找不到命令

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

我正在使用带有库“pexpect”的python3.9,并且我尝试在子进程中运行一些命令(然后等待特定结果)。 问题是我的子进程的 $PATH 与父进程不同,因此它找不到我想要使用的一些命令。 我的代码如下所示:

child = pexpect.spawn(f"foo 1 2", timeout=None)
child.expect(f"foo command ran successfully")

我可以在父进程中运行“foo”命令,但在子进程中我得到“命令未找到”。 有办法解决这个问题吗?我想我需要确保子进程具有相同的 $PATH 值,但我不确定。

python-3.x process pexpect
3个回答
0
投票

您可能想使用

env
在子进程中设置环境变量。比如:

import subprocess

# you could use "foo" instead of "env", but this is more robust
cmd = ["env", "foo", "1", "2"]
subprocess.run(cmd, check=True)

0
投票

我认为这成功了:

pexpect.spawn(f"foo 1 2", env=dict(os.environ), timeout=None)

0
投票

您可以以交互方式运行 shell,然后

echo $PATH
。将其与在 pexpect 之外运行的另一个 shell 实例进行比较,您应该能够看到是否存在差异。

© www.soinside.com 2019 - 2024. All rights reserved.