我有一个要求,其中1个进程将值设置为环境变量,我使用
在python中读取该值os.environ
根据python doc:
首先捕获此映射 导入os模块的时间, 通常在Python启动期间 处理site.py的一部分。改变为 在此之后的环境 没有反映在os.environ中, 除了通过修改所做的更改 os.environ直接。
我的问题是每次调用python脚本时进程设置/更改变量 请告诉我一种方法来读取更改后的值。
谢谢,
答案 0 :(得分:3)
我猜您可以随时使用os.getenv()
获取环境变量的值,这将反映最新状态。
更新:请注意,没有一个“全局”环境,至少在Linux上没有。引用维基百科:
在所有Unix和类Unix系统中,每个进程都有自己的一组私有环境变量。默认情况下,创建进程时,它会继承其父进程的重复环境,但父进程在创建子进程时所做的显式更改除外。
因此,如果从同一个父进程启动(fork)两个进程(例如bash
),并在其中一个进程中更改环境变量,则另一个进程将不会看到它,因为它使用父进程环境的另一个副本。同样,如果在启动子进程后更改父进程中的环境,则子进程将不会看到更改,因为它们已经创建了环境的私有副本。
答案 1 :(得分:1)
如果您的进程设置/更新环境变量然后调用Python脚本,您将在Python脚本中看到更新的值。但是,如果这些是并行进程,并且在Python脚本运行时环境变量被修改,那么在Python脚本中就看不到对environemnt变量的更新。