You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python无法读取终端设置的环境变量问题及疑问

终端环境变量在Python中无法获取的问题解答

问题回顾

执行以下命令后:

export key=value

或者

echo "export key=value" >> ~/.zshrc && source ~/.zshrc

终端中通过echo $key能正常获取变量值,但Python调用os.environ['key']时会抛出KeyError错误:

>>> import os
>>> os.environ["key"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/os.py", line 673, in __getitem__
    raise KeyError(key) from None
KeyError: 'key'

疑问解答

1. export key=value将变量存储在哪里?

  • 直接执行export key=value时,变量仅存在于当前shell进程及其子进程的内存环境中,不会写入任何磁盘配置文件(包括~/.zshrc),所以你在~/.zshrc里看不到它。关闭当前终端窗口后,shell进程终止,变量会被销毁。
  • 若执行echo "export key=value" >> ~/.zshrc && source ~/.zshrc,这条命令是把export key=value追加写入~/.zshrc,再通过source让当前shell加载更新后的配置。此时~/.zshrc里应该存在这条语句,若你看不到,可能是操作时路径错误,或查看的不是当前用户的配置文件。

2. Python执行os.environ['key']时会从哪里查询环境变量?

Python的os.environ读取的是当前Python进程自身的环境变量集合,这个集合是Python进程启动时从父进程(如终端shell、IDE进程)继承来的。只有父进程的环境变量中存在key,Python进程才能通过os.environ['key']获取对应的值。

解决方法

针对终端能获取但Python无法获取的情况,常见原因及解决方式:

  • 若先启动Python交互环境,再执行export命令:已启动的Python进程不会自动刷新环境变量,需关闭当前Python环境,重新从终端启动,才能继承新的环境变量。
  • 若Python从IDE(如VS Code、PyCharm)或双击图标启动:这些进程的父进程不是配置了环境变量的shell,无法继承变量。可选择:
    • 将环境变量写入全局配置文件(如~/.zshenv,zsh启动时会优先加载),然后重启IDE或系统;
    • 在IDE的运行配置中手动添加该环境变量(如PyCharm的Run Configuration、VS Code的launch.json配置项)。

内容的提问来源于stack exchange,提问作者Ian Hsiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:27:49