Flask应用程序在Heroku上失败:没有名为app的模块

时间:2018-08-27 13:00:57

标签: python heroku flask

我有一个已部署到Heroku的Flask应用程序,但出现错误:

2018-08-27T12:39:32.197715+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=heroku-seb-test.herokuapp.com request_id=3e02d494-1a3f-4467-9eaa-aaa551b4ca03 fwd="91.143.113.54" dyno= connect= service= status=503 bytes= protocol=https

似乎这是我的Flask应用程序结构中的一个错误,因为在其上方会引发一个Python / Flask异常:

File "/app/.heroku/python/lib/python2.7/site- 
packages/gunicorn/util.py", line 357, in import_app 
__import__(module)
ImportError: No module named app

这是我的文件夹结构:

  • 作品集
    • routes.py
    • (Procfile和其他依赖项)
    • 静态
      • css
      • js
      • 图片
      • lib
    • 模板
      • index.html
    • venv

这是我的routes.py文件:

from flask import Flask
from flask import render_template, request, flash, session, url_for, 
redirect

app = Flask(__name__)

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

app.run(debug=True)

这是我的Procfile

web: gunicorn app:app

1 个答案:

答案 0 :(得分:2)

Procfile告诉Heroku如何运行您的应用程序。 gunicorn expects to be given an argument in the form of module.variable确定应运行的事物。

今天,您告诉它您的应用程序位于名为app的模块中名为app的变量中:

web: gunicorn app:app

但是您的模块未称为app,而是称为routes(文件为routes.py)。更新您的Procfile以指向正确的对象:

web: gunicorn routes:app

提交更改并推送到Heroku以查看其效果。 (或者您可以使用heroku local在本地试用。)