设置环境变量后os.getenv()返回None的问题排查
问题分析与解决:CMD设置环境变量后Python无法读取
核心原因
用set命令在CMD中设置的是临时环境变量,仅对当前CMD进程及其直接启动的子进程生效。如果你的Python进程是从其他途径(比如IDE、桌面快捷方式)启动的,它不属于当前CMD的子进程,自然读不到这个变量。重启电脑后临时变量会被清空,所以重启后再设置也解决不了问题。
解决方法
方法1:在同一CMD进程内启动Python
- 打开CMD,执行
set GITHUB_USERNAME=damaf - 保持当前CMD窗口不变,直接输入
python进入交互环境,此时调用os.getenv('GITHUB_USERNAME')就能获取到值 - 若要运行脚本,在该CMD窗口执行
python your_script.py即可
方法2:设置永久环境变量
临时变量仅在当前会话有效,要让变量永久生效,需配置系统或用户级环境变量:
- 按下Win+R,输入
sysdm.cpl回车,打开系统属性窗口 - 切换到「高级」标签页,点击「环境变量」按钮
- 在「用户变量」(仅当前用户生效)或「系统变量」(所有用户生效)区域,点击「新建」:
- 变量名:
GITHUB_USERNAME - 变量值:
damaf
- 变量名:
- 依次点击「确定」保存所有设置
- 重启所有需要读取该变量的程序(包括CMD、IDE等),再运行Python即可读取到变量
方法3:使用.env文件管理开发环境变量(推荐)
如果只是开发场景使用,不想修改系统环境变量,可以用.env文件:
- 安装依赖包:
pip install python-dotenv - 在项目根目录创建
.env文件,写入内容:GITHUB_USERNAME=damaf - 在Python脚本开头添加以下代码:
from dotenv import load_dotenv import os load_dotenv() print(os.getenv('GITHUB_USERNAME')) # 可正常读取变量值
内容的提问来源于stack exchange,提问作者fdama
相关产品推荐
相关产品推荐

