部署Python Flask应用至Heroku时gunicorn命令未找到问题排查
解决Heroku部署Flask应用时
gunicorn: command not found的问题 看起来你遇到的问题大概率是依赖安装不完整或者路径配置有小细节没注意到,我帮你梳理几个排查和修复方向:
1. 修复requirements.txt的格式问题
你提供的requirements.txt里,gunicorn==19.8.1前面有多余的空格,这可能会导致pip在安装时忽略这个依赖包。Heroku的构建过程会严格按照requirements.txt的内容解析安装,所以请把每个依赖项前面的空格去掉,修正后的内容应该是:
gunicorn==19.8.1 Flask==0.12.2 Flask-Cache==0.13.1 Flask-Cors==3.0.2 Flask-MongoAlchemy==0.5.1 flask-mongoengine==0.9.5 Flask-PyMongo==0.5.2 Flask-WTF==0.14.2 gevent==1.2.1 greenlet==0.4.12 pymongo==3.6.1
2. 调整Procfile的命令写法
你的Procfile用了--pythonpath指定路径,但有时候这种写法在Heroku环境里会有路径解析问题。可以换成直接指定模块路径的方式,更稳妥:
web: gunicorn src.server.route:app --preload
这样Heroku能直接定位到src/server/route.py里的app实例。另外要确认两个关键点:
route.py确实存在于src/server/目录下route.py里的Flask实例确实命名为app(比如代码里有app = Flask(__name__))
3. 清除Heroku的构建缓存
有时候Heroku会缓存之前的构建结果,导致新的依赖没被正确安装。可以通过以下命令强制清除缓存并重新部署:
heroku plugins:install heroku-builds heroku builds:cache:purge git commit --allow-empty -m "Force purge build cache" git push heroku main
4. 确认Procfile的命名和位置
最后再检查一遍:Procfile是大写P开头,没有任何后缀(比如不能是Procfile.txt),并且确实放在项目的根目录下,和requirements.txt处于同一层级。
按照这几个步骤调整后,重新部署应该就能解决gunicorn找不到的问题了。
内容的提问来源于stack exchange,提问作者charles okojie
相关产品推荐
相关产品推荐

