是否可以在python中更改父进程的环境?

在Linux中,当我从外壳中调用python时,它将复制其环境,并启动python进程。因此,如果我执行以下操作:

import os
os.environ["FOO"] = "A_Value"

当python进程返回时,假设FOO最初是未定义的,它将仍然是未定义的。python进程(或任何子进程)是否可以修改其父进程的环境?

我知道您通常使用类似的方法解决此问题

source script_name.sh

但这与我的其他要求相冲突。


慕桂英3389331
浏览 708回答 3
3回答

慕慕森

任何流程都不能更改其父流程(或任何其他现有流程的环境)。但是,您可以通过使用修改后的环境创建新的交互式外壳来创建新环境。您必须生成使用升级环境并可以访问现有stdin,stdout和stderr的Shell的新副本,并进行其重新初始化。您需要执行类似use subprocess.Popen的操作/bin/bash -i。因此,原始外壳运行Python,而新外壳运行。是的,您正在运行许多进程。不,还算不错,因为原始的shell和Python除了等待子shell完成以使它们也可以干净退出之外,实际上并没有做任何事情。

温温酱

对于任何子进程,都无法更改父进程的环境。最好的办法是将shell语句输出到标准输出,然后将其输出,或将其写入到在父级中输出的文件中。
打开App,查看更多内容
随时随地看视频慕课网APP