Python:子进程中的持久化shell变量

8 投票
2 回答
3394 浏览
提问于 2025-04-15 12:54

我正在尝试使用Python的subprocess模块来执行一系列命令,但在运行这些命令之前,我需要先用export设置一些环境变量。不过,问题是这些环境变量在shell中似乎不持久,所以当我稍后运行其他命令时,这些环境变量就消失了。

有没有什么办法可以解决这个问题?我可以创建一个/bin/sh的进程,但我该如何获取在这个进程下运行的命令的退出状态呢?

2 个回答

5

亚历克斯说得完全正确。举个例子:

current_env=environ.copy()
current_env["XXX"] = "SOMETHING" #If you want to change some env variable
subProcess.Popen("command_n_args", env=current_env)
14

subprocess.Popen 是一个可以接受一个可选的命名参数 env 的函数,这个参数是一个字典,用来作为子进程的环境变量(你所说的“shell变量”)。你可以根据需要准备一个字典(可以先复制一份 os.environ,然后根据需要进行修改),然后把这个字典传递给你所有的 subprocess.Popen 调用。

撰写回答