使用 PATH 变量中的子进程执行自定义命令
Execute custom command using subprocess that is in PATH variable
我想执行我之前使用 subprocess.call(command)
函数从 python 编译的另一个程序。
但是,python 表示找不到命令。我怀疑子进程无法找到我的自定义命令,因为它不知道我的 Ubuntu 系统的 PATH
变量。是否有可能以某种方式执行以下代码,其中命令是我的 PATH
?
的一部分
import subprocess
subprocess.run("command -args")
运行 此代码导致错误 command not found
。
您可以提供命令的显式路径:
subprocess.run('/full/path/to/command.sh')
或者修改 Python 代码中的 PATH
变量:
import os
os.environ['PATH'] += ':'+'/full/path/to/'
subprocess.run('command.sh')
您可以修改环境变量。但是传递参数时要小心。
尝试这样的事情:
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)
我想执行我之前使用 subprocess.call(command)
函数从 python 编译的另一个程序。
但是,python 表示找不到命令。我怀疑子进程无法找到我的自定义命令,因为它不知道我的 Ubuntu 系统的 PATH
变量。是否有可能以某种方式执行以下代码,其中命令是我的 PATH
?
import subprocess
subprocess.run("command -args")
运行 此代码导致错误 command not found
。
您可以提供命令的显式路径:
subprocess.run('/full/path/to/command.sh')
或者修改 Python 代码中的 PATH
变量:
import os
os.environ['PATH'] += ':'+'/full/path/to/'
subprocess.run('command.sh')
您可以修改环境变量。但是传递参数时要小心。
尝试这样的事情:
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)