获取Python中更改的环境变量
我有一个需求,就是一个进程设置了一个环境变量的值,然后我想在Python中读取这个值,使用的方法是:
os.environ
根据Python的文档:
这个映射关系是在第一次导入os模块时捕获的,通常是在Python启动时作为处理site.py的一部分。之后对环境的任何更改都不会反映在os.environ中,除非是通过直接修改os.environ来进行的更改。
我的问题是,每次这个进程调用Python脚本时都会设置或更改这个变量。
请告诉我一个方法来读取这个改变后的值。
谢谢,
2 个回答
1
如果你的程序设置或更新了一个环境变量,然后再调用Python脚本,你在Python脚本中就能看到这个更新后的值。但是,如果这些程序是并行运行的,也就是说它们同时在工作,而环境变量在Python脚本运行的时候被修改了,那么Python脚本就看不到这个环境变量的更新。
3
我想你可以使用 os.getenv()
来获取环境变量的值,这样你总是能得到最新的状态。
更新:需要注意的是,实际上并没有一个“全局”的环境变量,至少在Linux系统上是这样的。引用维基百科的话:
在所有Unix及类Unix系统中,每个进程都有自己私有的一套环境变量。默认情况下,当一个进程被创建时,它会继承父进程的环境变量副本,除非父进程在创建子进程时做了明确的修改。
所以,如果你从同一个父进程(比如 bash
)启动了两个进程,并在其中一个进程中改变了环境变量,另一个进程是看不到这个变化的,因为它使用的是父进程环境的另一个副本。同样地,如果在启动子进程后你在父进程中改变了环境变量,子进程也不会看到这个变化,因为它们已经创建了自己的私有环境副本。