为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2019-09-26 14:39:16
在Linux中,当我从外壳中调用python时,它将复制其环境,并启动python进程。因此,如果我执行以下操作:import os os.environ["FOO"] = "A_Value"当python进程返回时,假设FOO最初是未定义的,它将仍然是未定义的。python进程(或任何子进程)是否可以修改其父进程的环境?我知道您通常使用类似的方法解决此问题source script_name.sh但这与我的其他要求相冲突。
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

任何流程都不能更改其父流程(或任何其他现有流程的环境)。

但是,您可以通过使用修改后的环境创建新的交互式外壳来创建新环境。

您必须生成使用升级环境并可以访问现有stdin,stdout和stderr的Shell的新副本,并进行其重新初始化。

您需要执行类似use subprocess.Popen的操作/bin/bash -i

因此,原始外壳运行Python,而新外壳运行。是的,您正在运行许多进程。不,还算不错,因为原始的shell和Python除了等待子shell完成以使它们也可以干净退出之外,实际上并没有做任何事情。


查看完整回答
反对 回复 2019-09-26
?
温温酱

TA贡献1752条经验 获得超4个赞

对于任何子进程,都无法更改父进程的环境。最好的办法是将shell语句输出到标准输出,然后将其输出,或将其写入到在父级中输出的文件中。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 707 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信