Python:环境变量未更新 [英] Python: Environment Variables not updating
本文介绍了Python:环境变量未更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试覆盖到Python中的环境变量。我可以读取值,然后写入值并打印更新后的值。但是,如果我检查命令行中的值,它仍然是原始值。为什么会这样?
首先,我创建了变量
export MYVAR=old_val
我的测试脚本myvar.py
#!/usr/bin/env python3
import os
print (os.environ['MYVAR'])
os.environ['MYVAR'] = "new_val"
print (os.environ['MYVAR'])
输出
$ ./myvar.py
old_val
new_val
$ echo $MYVAR
old_val
如您所见,输出的最后一行仍然显示old_val
推荐答案
简称:
python脚本更改其环境。但是,这不会影响父进程(外壳)的环境
长版本:
这是一个众所周知的问题,但非常令人困惑。
您必须知道的是,没有环境,每个进程都有自己的环境。
因此,在上面的示例中,外壳(在其中输入代码)只有一个环境。 当您调用./myvar.py
时,将创建当前环境的副本并将其传递给您的python脚本。
您的代码"仅"更改了该环境的副本。
一旦完成了Python脚本,这个副本就会被销毁,并且外壳程序将看到其初始的未修改环境。
大多数操作系统(Windows、Linux、MS-DOS等)都是如此
换句话说:任何子进程都不能更改调用它的进程的环境。
在bash中有一个诀窍,您可以获取脚本,而不是将其作为进程调用。
但是,如果您的python脚本启动了另一个进程(例如/bin/bash
),则子进程将看到修改后的环境。
这篇关于Python:环境变量未更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文