繁体   English   中英

将 Flask 应用程序部署到 Heroku 时没有名为“应用程序”的模块错误

[英]No module named "app" error on deploying Flask app to Heroku

我正在尝试将我的 flask 应用程序部署到 Heroku,但No module named 'app' on running the command

heroku logs --tail

我的 flask 应用程序具有以下文件夹结构

在此处输入图像描述

我收到以下错误。

2020-12-27T14:26:26.956274+00:00 app[web.1]: Traceback (most recent call last):
2020-12-27T14:26:26.956285+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-12-27T14:26:26.956289+00:00 app[web.1]: worker.init_process()
2020-12-27T14:26:26.956289+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-12-27T14:26:26.956290+00:00 app[web.1]: self.load_wsgi()
2020-12-27T14:26:26.956290+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-12-27T14:26:26.956291+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-12-27T14:26:26.956298+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-12-27T14:26:26.956299+00:00 app[web.1]: self.callable = self.load()
2020-12-27T14:26:26.956299+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-12-27T14:26:26.956300+00:00 app[web.1]: return self.load_wsgiapp()
2020-12-27T14:26:26.956300+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-12-27T14:26:26.956300+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-12-27T14:26:26.956301+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-12-27T14:26:26.956301+00:00 app[web.1]: mod = importlib.import_module(module)
2020-12-27T14:26:26.956301+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-12-27T14:26:26.956302+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-12-27T14:26:26.956302+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-12-27T14:26:26.956303+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-12-27T14:26:26.956303+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
2020-12-27T14:26:26.956309+00:00 app[web.1]: ModuleNotFoundError: No module named 'app'

这是我的 app.py 文件

from flask import Flask, abort, jsonify, request, render_template
import joblib
from feature import *
import json

pipeline = joblib.load('./pipeline.sav')

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(host='0.0.0.0')

这是我的Procfile:

web: gunicorn app:app

我在这里遇到了很多类似的问题,但没有一个可以帮助我解决它。 这个错误是指 app.py 文件吗? 我该如何解决这个问题?

我知道这是一个老问题,但我最近遇到了这个错误,让我补充一点,除了按照建议将代码上移一级之外,与Procfile位于同一目录中,还可以使用--chdir gunicorn 参数。 在这种情况下, Procfile内容可能是

web: gunicorn app:app --chdir App

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM