Python2.7 subprocess32:如何在通过Popen执行的两个脚本之间共享环境?

时间:2018-07-20 14:28:10

标签: python subprocess popen

我有2个脚本:1.配置一个,可修改约20个环境变量并在其中运行另一个小脚本,以及2.该过程使用script1设置的环境变量来执行操作。

我试图通过Python2.7 subprocess32.Popen()一个接一个地执行它们,并将相同的env变量传递给两个Popen。没有成功,script1的环境对于script2只是空的

import os
import subprocess32 as subprocess
my_env = os.environ
subprocess.Popen(script1, env=my_env)
subprocess.Popen(script2, env=my_env)

我实际上如何在两个脚本之间共享环境?

2 个答案:

答案 0 :(得分:3)

当第一个子进程退出时,对其环境的更改将消失。此类更改仅传播到其自己的子流程。您需要执行以下操作:

import shlex

subprocess.Popen(". {}; {}".format(shlex.quote(script1),
                                   shlex.quote(script2)), 
                 shell=True)

但与往常一样,使用shell=True会带来安全问题。

答案 1 :(得分:1)

我认为问题出在my_env=my_env,第二个参数必须是env

my_env = os.environ
subprocess.Popen(script1, env=my_env)
my_env = os.environ
subprocess.Popen(script2, env=my_env)