Heroku部署Django应用报错:找不到app/main:app文件或目录
Heroku部署Django+Uvicorn启动报错的解决办法
问题根源
你搞错了Uvicorn的启动路径写法——Uvicorn要的是Python模块路径(用点分隔层级),不是文件系统的路径(用斜杠),而且Heroku的Procfile必须明确进程类型。
正确的Procfile配置
根据你的项目结构(根目录下有app文件夹,里面有main.py),把Procfile改成下面这样:
web: uvicorn app.main:app --host 0.0.0.0 --port=${PORT}
重点改这几个地方:
- 把
app/main换成app.main:这是Python识别模块的正确写法,app是包,main是包里的模块 - 开头加
web::Heroku要求Web服务进程必须标web,不然会把命令解析成普通bash命令,导致找不到路径 - 删掉
--reload:这是开发环境的热重载参数,生产环境用不上,还可能引发启动问题
额外要检查的点
- 确认
app文件夹里有__init__.py(空文件就行),这样Python才会把它当成合法的包 - 检查
main.py里确实定义了叫app的ASGI实例,比如app = DjangoASGIHandler()这类代码 - 确保Heroku上的项目根目录在Python的搜索路径里,一般正常部署的话默认没问题,如果有问题可以在
requirements.txt里加相关配置或者设置PYTHONPATH环境变量
内容的提问来源于stack exchange,提问作者user3324136
相关产品推荐
相关产品推荐

