如何在Python中导入已完成进程的环境变量?

1 投票
2 回答
542 浏览
提问于 2025-04-16 00:22

我需要写一个Python脚本,这个脚本要在一个shell脚本运行完之后再导入环境变量。

假设你有一个shell脚本叫做 "a.sh":

export MYVAR="test"

在Python中,我想做类似这样的事情:

import os
env={}
os.spawnlpe(os.P_WAIT,'sh', 'sh', 'a.sh',env)
print env

然后得到:

{'MYVAR'="test"}

这样做可能吗?

2 个回答

0

我同意David的观点。

Perl有一个叫做Shell::Source的模块,可以实现这个功能。它的工作原理是运行你想要的脚本,并在一个子进程中加上一个env命令,这个命令会生成一系列变量和值的配对,用=符号分隔。你可以解析这些内容,把环境变量“导入”到你的进程中。如果你需要这种功能,这个模块值得一看。

5

不行,子进程中对环境变量所做的任何更改只会在这个子进程里有效。(据我所知是这样的)当这个子进程结束时,它的环境就会消失。

我建议让你的脚本打印出它的环境,或者至少打印出你关心的那些变量,输出到标准输出(或者标准错误,或者写到一个文件里),然后你可以从Python中读取这些输出。

撰写回答