好吧,似乎环境变量的情况在python中不一致。
在导入模块时使用os.environ或os.getenv返回 env 的状态来读取环境变量并不是什么秘密os。仍然可以使用分配给os.environ键来更新环境。
但是一旦我使用os.putenv或运行任何修改环境的 ctypes 代码,我就会发现实际进程环境和os.environ. Nuff 说,这个实际的环境将被保留给子进程,无论是用创建的os.system还是subprocess库的。就我而言,这是理想的行为。
现在我想查看和更改传递给子流程的环境。通常建议获取 的副本os.environ,修改它并作为参数传递以进行subprocess.Popen调用。但在这种情况下,由 ctypes 代码对环境所做的更新将丢失。
有没有办法克服这个问题?严格来说,有没有办法重新加载 os.environ 或使用其他工具获取具有实际环境的副本?