在Heroku部署Django应用时出现H10错误及core.wsgi模块找不到问题
问题排查与解决方案
根因说明
H10错误属于Heroku的应用崩溃错误,你遇到的报错直接由ModuleNotFoundError: No module named 'core.wsgi'触发,解决该导入错误即可修复H10问题。
分步排查操作
- 核对项目目录结构
确认和Procfile、requirements.txt同级的根目录下,存在名为core的文件夹,且该文件夹内包含__init__.py和wsgi.py两个文件。如果创建Django项目时设置的根应用名不是core,需要将Procfile中的配置改为对应名称,比如根应用名为my_django_project时,Procfile内容修改为:web: gunicorn my_django_project.wsgi --log-file - - 校验wsgi.py配置
打开core/wsgi.py文件,确认如下配置的路径和实际项目匹配:
如果你将settings文件拆分到了子目录,需要将上面的路径对应修改。os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") - 确认依赖配置
检查requirements.txt文件中是否包含gunicorn依赖,没有的话在本地虚拟环境执行pip install gunicorn && pip freeze > requirements.txt重新生成依赖文件。 - 检查ALLOWED_HOSTS配置
打开Django的settings.py文件,确认ALLOWED_HOSTS配置项已经添加Heroku域名,示例配置:
遗漏该配置也会导致应用启动失败。ALLOWED_HOSTS = [".herokuapp.com"] - 本地预验证
推送代码到Heroku前,先在本地项目根目录执行gunicorn core.wsgi(替换为实际的根应用名),确认本地可以正常启动后再推送,减少线上调试成本。
修复后验证
修改完成后重新推送代码到Heroku,执行heroku logs --tail查看运行日志,无报错即可正常访问应用。
内容的提问来源于stack exchange,提问作者diabetico
相关产品推荐
相关产品推荐

