gpt4 book ai didi

python - 无法使用带有 os.environ.get 的 PowerShell 读取环境变量集

转载 作者:行者123 更新时间:2023-12-04 08:01:09 24 4
gpt4 key购买 nike

这里有点随机问题。我使用 PowerShell 设置了一个环境变量,如下所示:

$env:GOOGLE_ELEVATION_API="the_api-key"

然后在 python 中我尝试用这个简单的脚本读取它:

from os import environ

key = environ.get("GOOGLE_ELEVATION_API")

这将返回 None。如果我在 PowerShell 中查询我的环境变量,它就在那里。如果我使用 os.environ 通过 python 查询它,则不是。

我发现的所有结果都没有提到这应该是一个问题,无论是在 PowerShell 端还是在 python 端。我没有重新启动我的机器,因为我真的不相信这是应该做的。我确实重启了我的 IDE,希望它能以某种方式缓存环境,但幸运的是它没有。

任何指针都会很棒!

最佳答案

  • 通过 PowerShell 的 $env: 命名空间设置环境变量,为当前进程定义它。

    • 但是,从 PowerShell session 直接调用的任何 Python 脚本都会看到此类变量,因为子进程继承调用者的环境变量。
  • 持久地所有进程看到的机器级别定义 Windows 环境变量,您必须直接使用 .NET API(从 PowerShell 7.1 开始):

# Note: Requires ELEVATION, due to setting at the *machine* level.
[Environment]::SetEnvironmentVariable('GOOGLE_ELEVATION_API', 'the_api-key', 'Machine')

请注意,只有 future PowerShell session 会看到此变量,并且通常需要重新启动应用程序才能看到新变量 也适用于其他正在运行的应用程序。

(异常(exception)情况是那些主动监听 WM_SETTINGCHANGE 消息并刷新其环境作为响应的应用程序,这就是 Windows GUI shell (explorer.exe) 所做的.)

有关在 Windows 上持久设置环境变量的更多信息,请参阅 this answer .

关于python - 无法使用带有 os.environ.get 的 PowerShell 读取环境变量集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66459734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com