簡體   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