子进程完成运行后,如何获取其环境变量?

use*_*850 3 python subprocess environment-variables

我正在寻找一种执行此操作的方法,以便可以将其传递到另一个子流程的环境中。

小智 6

这是一个简单的函数,它在子进程中运行命令,然后将其环境提取到当前进程中。

它基于Fnord的版本,没有tempfile,并且带有标记线以区分SET命令与进程本身的任何输出。它不是防弹的,但可以满足我的目的。

def setenv(cmd):
    cmd = cmd + ' && echo ~~~~START_ENVIRONMENT_HERE~~~~ && set'

    env = (subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
                     .stdout
                     .read()
                     .decode('utf-8')
                     .splitlines())

    record = False
    for e in env:
        if record:
            e = e.strip().split('=')
            os.environ[e[0]] = e[1]
        elif e.strip() == '~~~~START_ENVIRONMENT_HERE~~~~': 
            record = True
Run Code Online (Sandbox Code Playgroud)