部署Django项目到Heroku时出现django_heroku模块找不到错误如何解决?
解决Heroku部署Django时
django_heroku找不到的问题 根据你提供的错误信息,核心问题是Heroku服务器上未安装django-heroku模块,尽管你的requirements.txt中已声明。可以按以下步骤排查解决:
一、先排查依赖安装的基础问题
确认
requirements.txt的位置与提交状态- 确保
requirements.txt在项目根目录(和manage.py同级),而非子目录中。 - 检查
.gitignore文件,确认没有将requirements.txt加入忽略列表,否则该文件不会被推送到Heroku。 - 执行以下命令重新提交文件:
git add requirements.txt git commit -m "Ensure requirements.txt is tracked" git push heroku main
- 确保
验证
django-heroku的兼容性django-heroku==0.3.1是较旧版本,可能与Python 3.11存在兼容性问题。更可靠的方式是直接移除该依赖(django-heroku已停止维护),改用手动配置适配Heroku环境。
二、推荐方案:移除django-heroku,手动配置Heroku环境
1. 更新settings.py
移除所有与django-heroku相关的代码:
- 删除
import django_heroku语句 - 从
INSTALLED_APPS中移除django_heroku - 删除末尾的
django_heroku.settings(locals())
然后添加以下适配Heroku的配置:
import os import dj_database_url # 数据库配置(自动读取Heroku的DATABASE_URL环境变量) DATABASES = { 'default': dj_database_url.config(default='sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3')) } # 静态文件配置(用于Heroku收集静态文件) STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' # 允许的主机 ALLOWED_HOSTS = [] if os.getenv('HEROKU_APP_NAME'): ALLOWED_HOSTS.append(f"{os.getenv('HEROKU_APP_NAME')}.herokuapp.com") ALLOWED_HOSTS += ['localhost', '127.0.0.1'] # 日志配置(适配Heroku的日志系统) LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, }
2. 更新requirements.txt
移除django-heroku==0.3.1,添加以下必要依赖:
dj-database-url>=0.5.0 psycopg2-binary>=2.8 whitenoise>=6.0
执行命令更新依赖列表并提交:
pip freeze > requirements.txt git add requirements.txt settings.py git commit -m "Replace django-heroku with manual Heroku config" git push heroku main
3. 确认Procfile配置
你的Procfile配置是正确的,再次核对:
web: gunicorn albion.wsgi:application --log-file - release: python manage.py migrate
注意:如果你的Django项目根模块是大写的Albion,则需将albion.wsgi改为Albion.wsgi。
三、验证部署
推送代码后,执行以下命令查看Heroku构建日志,确认依赖安装和项目启动正常:
heroku logs --tail
若没有报错,访问你的Heroku应用URL即可验证是否运行正常。
内容的提问来源于stack exchange,提问作者Doing Things Occasionally
相关产品推荐
相关产品推荐

