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

时间:2010-06-24 10:07:36

标签: python unix shell environment-variables

我需要编写一个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 :(得分:5)

不,对子进程中的环境变量所做的任何更改都会保留在该子进程中。 (据我所知,就是这样)当子进程终止时,它的环境就会丢失。

我建议让shell脚本将其环境或至少你关心的变量打印到其标准输出(或标准错误,或者它可以将它们写入文件),并且你可以读取该输出来自Python。

答案 1 :(得分:0)

我同意大卫的帖子。

Perl有一个Shell::Source模块可以做到这一点。它的工作原理是在附加了env的子进程中运行所需的脚本,该子进程生成由=符号分隔的变量值对列表。您可以解析此问题并将环境“导入”到您的流程中。如果您需要这种行为,该模块值得一看。