Django中从.env加载SECRET_KEY失败,运行migrate报KeyError
KeyError: 'SECRET_KEY' 问题解决
问题场景
运行python manage.py migrate命令时触发KeyError: 'SECRET_KEY'错误,相关代码如下:
settings.py 代码
import os import dotenv dotenv_file = os.path.join(BASE_DIR, ".env") if os.path.isfile(dotenv_file): dotenv.load_dotenv(dotenv_file) # UPDATE secret key SECRET_KEY = os.environ['SECRET_KEY']
.env 文件内容
SECRET_KEY="TOPSECRETKEY"
排查与解决步骤
验证.env文件路径
临时在settings.py中添加print(BASE_DIR),执行python manage.py shell查看输出路径,确认.env文件确实放在该目录下。如果路径不符,调整dotenv_file的路径配置。修正配置加载逻辑
避免直接依赖系统环境变量,改用dotenv_values直接读取配置文件内容,增加容错性:import os import dotenv dotenv_file = os.path.join(BASE_DIR, ".env") if os.path.isfile(dotenv_file): env_vars = dotenv.dotenv_values(dotenv_file) SECRET_KEY = env_vars.get('SECRET_KEY') else: SECRET_KEY = os.environ.get('SECRET_KEY')调整.env文件格式
移除键值对的引号,dotenv默认会将引号解析为值的一部分,修正后的.env内容:SECRET_KEY=TOPSECRETKEY确认python-dotenv安装状态
确保已安装依赖:pip install python-dotenv,若版本过旧,执行pip install --upgrade python-dotenv更新。
内容的提问来源于stack exchange,提问作者Bob The Builder
相关产品推荐
相关产品推荐

