修改.env环境变量值后Django项目未加载新值的问题
排查Django读取.env旧值的问题
- 重启Django服务:Django启动时会一次性加载settings.py及对应.env配置,修改.env后必须重启服务(不管是本地
runserver还是生产环境的uwsgi/gunicorn),才会重新读取新配置。 - 确认.env文件修改已保存且路径正确:直接打开项目根目录下的
.env文件,确认DEFAULT_OTP=2952已保存;同时验证BASE_DIR指向的是项目根目录——可以在settings.py中临时添加print(BASE_DIR),重启服务后查看输出路径,确保读取的是目标.env文件。 - 强制environ覆盖旧值:
environ.Env.read_env默认会缓存已加载的环境变量,添加overwrite=True参数强制覆盖旧值:environ.Env.read_env(env_file=f"{BASE_DIR}/.env", overwrite=True) - 排查缓存问题:
- 关闭并重新打开IDE,避免IDE缓存旧文件内容;
- 用命令行直接查看文件内容(Linux/macOS执行
cat .env,Windows执行type .env),确认系统读取到的是最新值。
- 检查系统环境变量覆盖:系统级环境变量优先级高于
.env文件,执行对应命令查看是否存在同名变量:- Linux/macOS:
echo $DEFAULT_OTP - Windows:
echo %DEFAULT_OTP%
如果输出2951,说明系统环境变量覆盖了.env的配置,需要删除或修改系统变量。
- Linux/macOS:
内容的提问来源于stack exchange,提问作者Roopesh kp
相关产品推荐
相关产品推荐

