使用 PATH 变量中的子进程执行自定义命令

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

我想使用

subprocess.call(command)
函数执行我之前从 python 编译的另一个程序。

但是,python 表示找不到该命令。我怀疑子进程无法找到我的自定义命令,因为它不知道我的 Ubuntu 系统的

PATH
变量。是否可以以某种方式执行以下代码,其中命令是我的
PATH
的一部分?

import subprocess
subprocess.run("command -args")

运行此代码会导致错误

command not found

python shell subprocess command
2个回答
3
投票

您可以提供命令的显式路径:

subprocess.run('/full/path/to/command.sh')

或者修改 Python 代码中的

PATH
变量:

import os
os.environ['PATH'] += os.pathsep + '/full/path/to/'
subprocess.run('command.sh')

1
投票

您可以修改环境变量。但传递参数时要小心。

尝试这样的事情:

import os
import subprocess

my_env = os.environ.copy()
my_env["PATH"] = "/usr/test/path:" + my_env["PATH"]
subprocess.run(["command", "-args"], env=my_env)
© www.soinside.com 2019 - 2024. All rights reserved.