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

Heroku部署Django时collectstatic报错:SECRET_KEY未找到如何解决?

解决Heroku部署Django时collectstatic的SECRET_KEY错误

在Heroku部署Django应用过程中,执行命令python manage.py collectstatic --noinput时出现以下错误:

$ python manage.py collectstatic --noinput
       Traceback (most recent call last):
         File "/tmp/build_01f62511/manage.py", line 22, in <module>
           main()
         File "/tmp/build_01f62511/manage.py", line 18, in main
           execute_from_command_line(sys.argv)
         File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
           utility.execute()
         File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/__init__.py", line 386, in execute
           settings.INSTALLED_APPS
         File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 92, in __getattr__
           self._setup(name)
         File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 79, in _setup
           self._wrapped = Settings(settings_module)
         File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 190, in __init__
           mod = importlib.import_module(self.SETTINGS_MODULE)
         File "/app/.heroku/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
           return _bootstrap._gcd_import(name[level:], package, level)
         File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
         File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
         File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
         File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
         File "<frozen importlib._bootstrap_external>", line 883, in exec_module
         File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
         File "/tmp/build_01f62511/main/settings.py", line 25, in <module>
           SECRET_KEY = config("SECRET_KEY")
         File "/app/.heroku/python/lib/python3.10/site-packages/decouple.py", line 243, in __call__
           return self.config(*args, **kwargs)
         File "/app/.heroku/python/lib/python3.10/site-packages/decouple.py", line 105, in __call__
           return self.get(*args, **kwargs)
         File "/app/.heroku/python/lib/python3.10/site-packages/decouple.py", line 90, in get
           raise UndefinedValueError('{} not found. Declare it as envvar or define a default value.'.format(option))
       decouple.UndefinedValueError: SECRET_KEY not found. Declare it as envvar or define a default value.
 !     Error while running '$ python manage.py collectstatic --noinput'.
       See traceback above for details.
       You may need to update application code to resolve this error.
       Or, you can disable collectstatic for this application:
          $ heroku config:set DISABLE_COLLECTSTATIC=1
 !     Push rejected, failed to compile Python app.
 !     Push failed

解决方法

  • 配置Heroku环境变量(生产环境推荐)
    在本地终端执行以下命令,将你的Django SECRET_KEY添加到Heroku环境变量中:

    heroku config:set SECRET_KEY="你的Django密钥"
    

    密钥可使用本地settings.py中原有的值,或通过Django的get_random_secret_key()函数生成新的安全密钥。

  • 给config函数设置默认值(仅测试环境使用)
    修改settings.py中的SECRET_KEY获取逻辑,添加默认值:

    SECRET_KEY = config("SECRET_KEY", default="你的临时默认密钥")
    

    注意:生产环境禁用此方式,默认密钥会带来安全风险。

  • 临时禁用collectstatic(不推荐长期使用)
    若需临时跳过静态文件收集步骤,可执行:

    heroku config:set DISABLE_COLLECTSTATIC=1
    

    此为临时方案,长期部署仍需正确配置静态文件与环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:45:46