单文件Flask应用部署Heroku遇Git推送错误及Procfile配置疑问
嘿,我来帮你一步步解决这两个问题——先搞定Git推送的错误,再弄明白单文件Flask应用的Procfile该怎么写~
1. 解决
src refspec master does not match any 错误 这个错误本质上是Git找不到你要推送的master分支,或者你还没提交任何代码到本地仓库。可以按下面的步骤排查:
- 先检查当前分支:在终端运行
git branch,看显示的分支名是什么。现在很多Git仓库默认分支是main而不是master,如果是这种情况,你应该用这个命令推送:git push heroku main - 如果确实需要用master分支:可以把当前分支重命名为master,运行
git branch -m main master,之后再执行git push heroku master - 确保代码已经提交:如果还没提交任何代码,先执行这两步:
git add .(把所有文件加入暂存区)git commit -m "Initial commit for Flask app"(提交到本地仓库)
完成后再尝试推送。
2. 单文件Flask应用的Procfile编写
你的代码都在flasker.py里,Procfile其实非常简单,只需要指定Heroku用Gunicorn(Heroku推荐的WSGI服务器)运行你的Flask实例:
- 首先确保你的
requirements.txt里已经添加了gunicorn和Flask,文件内容大概是这样:
Flask==2.3.3 gunicorn==21.2.0
(版本号可以根据你实际使用的来调整)
2. 在项目根目录创建一个名为Procfile(注意首字母大写,没有后缀)的文件,里面只需要写一行:web: gunicorn flasker:app
这里解释一下:
web:告诉Heroku这是一个处理HTTP请求的Web进程flasker:你的Python文件名(去掉.py后缀)app:你在flasker.py里创建的Flask实例变量,也就是代码里app = Flask(__name__)这一行的app
最后别忘了把Procfile和requirements.txt都添加到Git并提交,再重新推送就可以了。
内容的提问来源于stack exchange,提问作者shoseta
相关产品推荐
相关产品推荐

