如何在Python中导入已完成进程的环境变量?
我需要写一个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中读取这些输出。