You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku运行Django自定义管理命令报SECRET_KEY未配置错误求助

问题根因
  • heroku ps:exec启动的交互式shell会话不会自动加载你在Heroku后台配置的应用环境变量,仅dyno启动时的主进程会继承这些变量,因此你的Web服务运行正常,但手动进入shell执行命令时无法读取到SECRET_KEY等配置。
  • 本地开发环境存在.env文件存储配置,environ.Env.read_env()可以正常读取到对应参数,因此本地运行无报错。
解决方案

方案1(官方推荐)

使用heroku run执行管理命令,该方式会自动加载所有应用配置的环境变量:

heroku run python manage.py test_command -a library-backend

方案2(兼容ps:exec执行场景)

如果需要进入dyno的交互式shell执行命令,可以在进入shell后先手动加载环境变量再运行命令:

# 进入shell后先执行该命令加载配置
export $(cat /app/.profile.d/env | xargs)
# 再执行自定义命令
python manage.py test_command

方案3(优化配置兼容性)

修改settings.py的环境变量加载逻辑,增加无.env文件时的兼容处理,避免后续同类问题:

import environ
import os

env = environ.Env(DEBUG=(bool, False))
# 仅本地开发存在.env文件时才读取,生产环境直接读取系统环境变量
env_file = os.path.join(os.path.dirname(__file__), '.env')
if os.path.isfile(env_file):
    environ.Env.read_env(env_file)

DEBUG = env('DEBUG')
SECRET_KEY = env('SECRET_KEY')
DATABASE_URL = env('DATABASE_URL')

内容的提问来源于stack exchange,提问作者Andrew Einhorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:15:01