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

使用Heroku CLI部署Django项目时遇ImportError: No module named 'decouple'

解决Heroku部署Django时collectstatic报错的问题

嘿,看你贴的报错,这绝对是Django部署Heroku时最常踩的坑之一!我帮身边好几个开发者排查过类似问题,给你列几个大概率能解决的方向:

1. 先核对静态文件核心配置

打开你的settings.py,务必确认这几个配置没出错:

  • 必须设置 STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles'),Heroku默认会从这个目录读取静态文件
  • STATIC_URL = '/static/' 这个配置不能乱改
  • 确保 django.contrib.staticfiles 在 INSTALLED_APPS 列表里

2. 补上必要的环境变量

Heroku上部署Django必须把DEBUG设为False,但如果没配置SECRET_KEY或者数据库连接,collectstatic会直接罢工。用Heroku CLI补一下:

# 设置和本地一致的密钥
heroku config:set SECRET_KEY="your-secret-key-here"
# 关闭DEBUG模式(生产环境必须这么做)
heroku config:set DEBUG=False

3. 确认依赖是否齐全

Heroku官方推荐用whitenoise处理静态文件,要是你的requirements.txt里没加它,赶紧补上:

whitenoise==6.4.0  # 可以换成最新稳定版本

同时要在settings.py的MIDDLEWARE里加上它,位置很关键:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',  # 必须放在这一行后面!
    # 其他中间件...
]

另外注意:你报错里显示用的是Python3.5,这个版本太老了,建议在runtime.txt里指定一个兼容的新版本,比如python-3.11.4,避免版本不兼容导致的奇怪问题。

4. 手动指定collectstatic执行逻辑(可选)

如果Heroku自动执行的collectstatic还是有问题,可以在Procfile里明确写出来执行顺序:

web: python manage.py collectstatic --noinput && gunicorn your_project_name.wsgi

记得把your_project_name换成你实际的项目名称(就是存wsgi.py的那个文件夹)


你贴的报错信息:

remote: -----> $ python manage.py collectstatic --noinput
remote: Traceback (most recent call last):
remote: File "manage.py", line 15, in <module>
remote: execute_from_command_line(sys.argv)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/init.py", lin...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:39:32