Django博客项目KeyError:无法读取环境变量myBlog
Django多配置架构KeyError: 'myBlog' 解决方案
一、先确认环境变量是否被终端正确读取
- Windows CMD终端执行:
echo %myBlog%,PowerShell执行:$env:myBlog,如果没有输出预期的prod,说明环境变量未生效:- 检查环境变量是配置在用户变量还是系统变量,确保当前用户有权限读取
- 配置环境变量后必须重启终端,终端只会在启动时加载环境变量
- 若使用第三方终端(如Git Bash),需确认它是否能读取Windows系统环境变量
二、调整Settings加载逻辑,避免提前读取环境变量
你的__init__.py先导入base.py,而base.py里直接用os.environ['myBlog']读取环境变量,导致还没进入环境判断逻辑就报错。修改如下:
1. 修改settings/__init__.py
import os # 先获取环境变量,优先用系统环境变量,默认 fallback 到local env = os.environ.get('myBlog', 'local') if env == 'prod': from .prod import * else: from .local import *
2. 移除base.py中的冗余代码
删除base.py里的这一行:
myBlog = os.environ['myBlog']
这个变量是用来切换环境的,不需要在基础配置中定义。
三、可选:用.env文件管理环境变量(更稳定)
如果经常遇到系统环境变量不生效的问题,推荐用python-dotenv管理:
- 安装依赖:
pip install python-dotenv
- 在项目根目录创建
.env文件:
myBlog=prod SECRET_KEY=your-actual-secret-key
- 在
settings/__init__.py最顶部添加加载逻辑:
from dotenv import load_dotenv load_dotenv() # 加载.env文件中的环境变量
这样不管系统环境变量是否配置,Django都会优先读取.env里的配置,避免终端环境的影响。
内容的提问来源于stack exchange,提问作者Bastion2
相关产品推荐
相关产品推荐

