Pau*_*aul 5 python powershell environment-variables
这里有一个随机问题。我使用 PowerShell 设置环境变量,如下所示:
$env:GOOGLE_ELEVATION_API="the_api-key"
Run Code Online (Sandbox Code Playgroud)
然后在 python 中我尝试用这个简单的脚本来读取它:
from os import environ
key = environ.get("GOOGLE_ELEVATION_API")
Run Code Online (Sandbox Code Playgroud)
这样就返回了None
。如果我在 PowerShell 中查询我的环境变量,它就在那里。如果我通过 python 查询os.environ
它则不是。
我发现的结果都没有提到这应该是一个问题,无论是在 PowerShell 方面还是在 python 方面。我还没有重新启动我的机器,因为老实说我不相信这是应该做的。我确实重新启动了 IDE,希望它能以某种方式缓存环境,但幸运的是它没有。
任何指点都会很棒!
通过 PowerShell 的命名空间设置环境变量仅为当前进程$env:
定义它。
要在所有进程都能看到的计算机级别持久定义 Windows 环境变量,您必须直接使用 .NET API(从 PowerShell 7.4 开始):
# Note: Requires ELEVATION, due to setting at the *machine* level.
[Environment]::SetEnvironmentVariable('GOOGLE_ELEVATION_API', 'the_api-key', 'Machine')
Run Code Online (Sandbox Code Playgroud)
请注意,只有未来的PowerShell 会话才会看到此变量,[1],并且需要重新启动应用程序才能看到新变量,这通常也适用于其他正在运行的应用程序。
(例外的是那些主动侦听消息WM_SETTINGCHANGE
并刷新其环境作为响应的应用程序,这就是 Windows GUI shell ( explorer.exe
) 所做的事情。)
有关在 Windows 上持久设置环境变量的更多信息,请参阅此答案。
[1] 但是,您也可以通过在进程级别重复定义来为当前会话定义它:
$env:GOOGLE_ELEVATION_API = 'the_api-key'
归档时间: |
|
查看次数: |
2613 次 |
最近记录: |