Azure Web App中Flask应用环境变量配置失效问题咨询
Flask应用在Azure Web App中配置环境变量的正确方法
问题原因
你当前的代码里load_dotenv()默认会优先加载本地.env文件的变量,如果部署时.env被一并上传到Azure,会覆盖你在Azure配置的环境变量;另外如果Azure的变量名带空格、未保存配置或未重启服务,也会导致配置不生效。
解决方案
1. 调整环境变量加载逻辑
修改代码,让load_dotenv仅在开发环境生效,或者不覆盖系统已存在的环境变量:
from dotenv import load_dotenv from os import environ # 仅加载本地.env文件,且不覆盖Azure已配置的系统环境变量 load_dotenv(override=False) class Config: SECRET_KEY = environ.get('SECRET_KEY')
如果要严格区分开发/生产环境,可通过环境变量判断控制加载:
from dotenv import load_dotenv from os import environ # 仅在开发环境加载本地.env文件 if environ.get('FLASK_ENV') == 'development': load_dotenv() class Config: SECRET_KEY = environ.get('SECRET_KEY')
2. 确保Azure端配置正确
- 登录Azure Portal,进入你的Web App服务,选择「配置」→「应用程序设置」
- 检查
SECRET_KEY的变量名无前后空格(你的示例中变量名后带空格,会导致无法匹配),值填写准确 - 配置完成后点击「保存」,然后重启Web App服务(环境变量修改后必须重启才会生效)
3. 验证配置是否生效
可临时添加调试代码(生产环境建议移除),确认环境变量是否被正确读取:
# 临时输出环境变量值用于调试 print("当前SECRET_KEY:", environ.get('SECRET_KEY'))
部署后通过Azure Web App的「日志流」查看输出,确认变量是否正确加载。
内容的提问来源于stack exchange,提问作者newdeveloper
相关产品推荐
相关产品推荐

