Flask项目部署Heroku失败,推送时报buildpack不兼容等错误如何解决?
问题核心原因
- 首要根因:项目中
runtime.txt指定的python-3.6.0与默认的Heroku-20运行栈不兼容,Heroku-20栈最低支持Python 3.6.11及以上版本,旧版本Python无法被官方Python构建包识别,直接触发构建包检测失败错误。 - 次要问题:本地Git分支命名与远程Heroku仓库分支命名不匹配,若本地默认分支为
master,强行推送main分支就会触发src refspec main does not match any报错。
具体解决步骤
- 调整Python版本配置:修改
runtime.txt内容为Heroku-20栈支持的Python版本,比如python-3.9.16,也可以直接删除runtime.txt,Heroku会自动匹配当前栈的默认稳定Python版本。 - 统一Git推送分支名:执行
git branch查看本地当前分支名,若输出结果为master,推送时统一使用git push heroku master命令即可,不需要强制推送不存在的main分支。 - 提交修改并重新部署:依次执行以下命令提交配置修改并推送:
git add . git commit -m "fix: adapt Heroku Python version requirement" git push heroku master - 启动web进程验证:推送完成后执行
heroku ps:scale web=1启动web服务,再执行heroku open即可直接访问部署好的应用。
补充验证:确认你的Procfile无后缀名(不要存储为Procfile.txt),且内容为
web: gunicorn test:app,该配置与你test.py中的Flask实例命名完全匹配,无需修改。
内容的提问来源于stack exchange,提问作者Nikolai Savulkin
相关产品推荐
相关产品推荐

