从Python脚本设置env变量

时间:2013-12-04 21:35:22

标签: python linux bash shell

在我的构建中(我正在使用Linux)我需要调用Python脚本并设置一些env变量。我甚至在退出脚本后也需要设置这些变量。我可以在脚本中使用os.environ设置它,但每当我退出脚本并尝试查看env变量是否从终端设置(echo $ myenv)时 - 我什么都没得到。

我是Python的新手,并且做了相当多的谷歌搜索。但是,我不太确定它是否可行。我尝试使用子进程:

subprocess.call('setenv myenv 4s3', shell=True)

还尝试使用os.system:

os.system("setenv myenv 4s3")

到目前为止,我没有成功。

2 个答案:

答案 0 :(得分:3)

您无法从子进程设置环境变量,并使它们在父进程中可见。每个进程都有自己的环境副本,并且更改不会向上传播。

你可以做的是让Python脚本打印它想要更改的设置,让外部shell执行相应的命令。

答案 1 :(得分:0)

也许你会发现一些像c vfork这样的函数用于Python。

当您进行vfork时,两个进程共享内存空间,因此您可能会从子进程覆盖父进程中的环境变量。

警告:vfork存在许多安全问题,因此不推荐使用。如果你绝望的话就使用它。