在Python中获取更改的环境变量

时间:2011-05-09 10:10:25

标签: python

我有一个要求,其中1个进程将值设置为环境变量,我使用

在python中读取该值
  

os.environ

根据python doc:

  

首先捕获此映射   导入os模块的时间,   通常在Python启动期间   处理site.py的一部分。改变为   在此之后的环境   没有反映在os.environ中,   除了通过修改所做的更改   os.environ直接。

我的问题是每次调用python脚本时进程设置/更改变量 请告诉我一种方法来读取更改后的值。

谢谢,

2 个答案:

答案 0 :(得分:3)

我猜您可以随时使用os.getenv()获取环境变量的值,这将反映最新状态。

更新:请注意,没有一个“全局”环境,至少在Linux上没有。引用维基百科:

  

在所有Unix和类Unix系统中,每个进程都有自己的一组私有环境变量。默认情况下,创建进程时,它会继承其父进程的重复环境,但父进程在创建子进程时所做的显式更改除外。

因此,如果从同一个父进程启动(fork)两个进程(例如bash),并在其中一个进程中更改环境变量,则另一个进程将不会看到它,因为它使用父进程环境的另一个副本。同样,如果在启动子进程后更改父进程中的环境,则子进程将不会看到更改,因为它们已经创建了环境的私有副本。

答案 1 :(得分:1)

如果您的进程设置/更新环境变量然后调用Python脚本,您将在Python脚本中看到更新的值。但是,如果这些是并行进程,并且在Python脚本运行时环境变量被修改,那么在Python脚本中就看不到对environemnt变量的更新。