无法使用os.ENVIRO.get读取PowerShell设置的环境变量

2024-04-24 13:45:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有点随机问题。我使用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,希望它能以某种方式缓存环境,但谢天谢地,它没有

任何指针都会很棒


Tags: thekeyfromimportenv脚本apiget
1条回答
网友
1楼 · 发布于 2024-04-24 13:45:19
  • 通过PowerShell的$env:名称空间设置环境变量只为当前进程定义它

    • 但是,从PowerShell会话直接调用的任何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')

请注意,只有未来的PowerShell会话才会看到此变量,并且需要重新启动应用程序,以便它看到新变量通常也适用于其他正在运行的应用程序

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

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

相关问题 更多 >