【问题标题】:Get Changed Environment Variable in Python在 Python 中获取更改的环境变量
【发布时间】:2011-08-21 13:56:08
【问题描述】:

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

读取该值

操作系统环境

根据 python 文档:

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

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

谢谢,

【问题讨论】:

    标签: python


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好的。问题在于,没有一个“全局”环境可以被所有进程看到。请参阅上面的更新。
    • 一个建议:您可以使用modified_environ 在此question 中描述的上下文管理器来制作/重写您的流程,以便在完成时恢复修改后的环境变量。
    【解决方案2】:

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

    【讨论】:

    • 我有第二种情况。有什么方法可以获取更新的值吗?
    猜你喜欢
    • 2013-07-05
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2014-09-30
    • 2013-10-30
    • 1970-01-01
    • 2014-04-15
    相关资源
    最近更新 更多