【问题标题】:os.environ not setting environment variables [duplicate]os.environ 未设置环境变量 [重复]
【发布时间】: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.environ dict 可能与实际的流程环境不同步,例如DLL 函数可以调用_putenv。
  • @CharlesDuffy,这个同步怪癖值得注意;这是每个 Python 程序员都应该知道的事情,因此即使作为一个切题的注释也值得重复。此外,从技术上讲,当前进程中设置的环境变量可以通过生成子进程来延长它的寿命。 ;-)

标签: python windows shell command-line environment-variables


【解决方案1】:

os.environ[...] = ... 仅在 python 进程(或其子进程)期间设置环境变量。

为运行 Python 的 shell 设置变量并不容易(即不使用特定于操作系统的工具),当然也不可取。请参阅 aumo 的评论,了解解决问题的替代方法和有些晦涩的方法。

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 2019-03-24
    • 2014-09-05
    • 2020-10-25
    • 2021-08-29
    • 2013-11-20
    • 2013-04-20
    • 2022-12-02
    相关资源
    最近更新 更多