You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

推送Python Flask应用至Heroku报错:无法找到/app/App.py文件

Flask应用本地正常但Heroku部署报错:找不到App.py

错误日志

2024-01-13T20:46:22.625482+00:00 app[web.1]: python: can't open file '/app/App.py': [Errno 2] No such file or directory

项目目录结构

|--vollyball_practice_tracker
|   |--static
|      |-script.js
|      |-styles.css
|   |--templates
|      |--index.html
|   |--App.py
|   |--Pipfile
|   |--Procfile
|   |--requirements.txt

关键文件内容

App.py

from flask import Flask, render_template, request

app = Flask(__name__, static_url_path='/static', static_folder='static')

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8000)

Procfile

web: pipenv run python App.py

requirements.txt

blinker==1.7.0
click==8.1.7
Flask==3.0.0
importlib-metadata==7.0.1
itsdangerous==2.1.2
Jinja2==3.1.3
MarkupSafe==2.1.3
Werkzeug==3.0.1
zipp==3.17.0

解决步骤

  • 确认Git提交根目录:Heroku将推送的Git仓库根目录作为/app目录。如果本地是从vollyball_practice_tracker的父目录执行Git操作,Heroku的/app下会多出一层子文件夹,导致找不到App.py。解决:进入vollyball_practice_tracker目录,初始化Git(若未初始化),执行git add .、git commit -m "init",再推送到Heroku。
  • 统一文件名大小写:Heroku运行在Linux环境,文件名区分大小写。确保Procfile中指定的App.py与实际文件名完全一致(当前目录结构没问题,需确认提交的文件名称无误)。
  • 改用Gunicorn启动(推荐):Flask内置服务器不适合生产环境,Heroku官方推荐使用Gunicorn。修改Procfile为:
    web: gunicorn App:app
    
    同时将gunicorn添加到requirements.txt中(本地执行pip install gunicorn后,运行pip freeze > requirements.txt更新文件)。
  • 检查.gitignore配置:确保未将App.py、static、templates等核心文件加入.gitignore,导致文件未被推送到Heroku服务器。

内容的提问来源于stack exchange,提问作者Evan Wright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:39:54