Heroku应用名需与Django项目名一致吗?部署报错求助
问题分析与解决方案
你的猜测完全正确!
Heroku上的应用名shworkout只是平台用来标识你的应用的外部名称,和本地Django项目的内部结构没有半毛钱关系。Gunicorn会严格按照你在Procfile里写的路径去寻找WSGI模块——当你写shworkout.wsgi时,它会在代码目录里找名为shworkout的Python包(也就是带__init__.py的文件夹),但你的项目里实际只有workout目录下才有wsgi.py文件,所以必然会抛出ModuleNotFoundError。
解决步骤:
- 修改Procfile:把里面的
shworkout.wsgi替换成workout.wsgi,最终Procfile内容应该是:web: gunicorn workout.wsgi --log-file - - 本地验证(可选但推荐):在项目根目录(就是包含
manage.py和workout文件夹的那个目录)里,执行gunicorn workout.wsgi命令,如果能正常启动服务,说明配置没问题。 - 重新部署:把修改后的Procfile提交到Git,再推送到Heroku即可。
另外额外提醒下:确保你的requirements.txt里已经包含了gunicorn和Django等必要依赖,Heroku构建环境时需要这些包来运行你的应用。
内容的提问来源于stack exchange,提问作者Sahand
相关产品推荐
相关产品推荐

