【发布时间】:2015-07-12 10:58:10
【问题描述】:
我正在尝试使用 Python 设置 Windows 环境变量。
似乎与文档相反,os.environ 可以获取环境变量但不能设置它们。尝试在 Windows 命令提示符中运行这些:
这行得通:
python -c "import os; print(os.environ['PATH'])"
这不是:
python -c "import os; os.environ['FOO'] = 'BAR'"
尝试在命令提示符中输入set。环境变量 FOO 不存在。
如何通过 Python 设置永久的 Windows 环境变量?
【问题讨论】:
-
将此视为保护您的功能:子shell 所做的任何事情都不会干扰调用它的程序。这使您可以放心地调用。/创建子shell,它不会干扰您的任何环境变量。
-
如果你想检查
os.environ是否正在创建环境变量,那么从你的shell 中检查是错误的工具。使用 Process Explorer 检查您的 Python 进程的状态,您会看到这些确实是创建的,即使它们没有比创建它们的进程长。 -
@CharlesDuffy,Python 的特殊之处在于
os.environdict 可能与实际的流程环境不同步,例如DLL 函数可以调用_putenv。 -
@CharlesDuffy,这个同步怪癖值得注意;这是每个 Python 程序员都应该知道的事情,因此即使作为一个切题的注释也值得重复。此外,从技术上讲,当前进程中设置的环境变量可以通过生成子进程来延长它的寿命。 ;-)
标签: python windows shell command-line environment-variables