Flask 应用程序 - 部署到 AWS Elastic Beanstalk 时出错
Posted
技术标签:
【中文标题】Flask 应用程序 - 部署到 AWS Elastic Beanstalk 时出错【英文标题】:Flask Application - Error deploying to AWS Elastic Beanstalk 【发布时间】:2021-10-11 19:18:14 【问题描述】:我正在尝试将我的 Flask 应用程序部署到 AWS Elastic Beanstalk。但是,我遇到了这个问题/错误,它似乎不是来自我编写的应用程序代码,而是来自其中一个库。
mod = importlib.import_module(module)
Aug 7 00:19:43 ip-172-31-27-51 web: File "/usr/lib64/python3.8/importlib/__init__.py", line 127, in import_module
Aug 7 00:19:43 ip-172-31-27-51 web: return _bootstrap._gcd_import(name[level:], package, level)
Aug 7 00:19:43 ip-172-31-27-51 web: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
Aug 7 00:19:43 ip-172-31-27-51 web: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
Aug 7 00:19:43 ip-172-31-27-51 web: File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
Aug 7 00:19:43 ip-172-31-27-51 web: ModuleNotFoundError: No module named 'application'
我在AWS EC2
实例日志中发现了错误。
这是我的文件结构:
- auth
* login
* server
* init.py
- templates
* base.html
- pages
* home.py
* page2.py
index.py
app.py
app.py
的内容
import dash
import flask
app = dash.Dash(__name__,
external_stylesheets=external_stylesheets,
)
server = app.server
index.py
的内容
app.layout = html.Div([
# header
html.Div([
dcc.Link(
href=get_relative_path('/home'),
),
dcc.Link(
href=get_relative_path('/archive'),
),
dcc.Location(id='url'),
html.Div(id='page-content', style='margin-left': '2%'),
])
# Render page content
@app.callback(Output("page-content", "children"),
[
Input('url', 'pathname')
]
)
def display_content(pathname):
if pathname == '/home':
return home.layout
elif pathname == '/archive':
return archive.layout()
else:
return home.layout
init.py
的内容
from flask_login import LoginManager, login_required
from .server import server
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from werkzeug.serving import run_simple
from index import app as dashApp
@server.route('/dashboard')
@login_required
def render_dashboard():
return redirect('/dashboard/')
app = DispatcherMiddleware(server,
'/dashboard': dashApp.server,
#add dash routes
)
if __name__ == '__main__':
run_simple('0.0.0.0', 5000, app, use_reloader=True, use_debugger=True)
server.py
的内容
from flask import Flask
server = Flask(__name__, instance_relative_config=False)
【问题讨论】:
进展如何?仍然不清楚为什么需要application
?
个人资料有问题。
【参考方案1】:
您的app.py
应取消application.py
。代码中的app
相同。应该是application
。
【讨论】:
我已经能够使用 app.py 运行该应用程序。为什么要查找 application 和 application.py? @kms 因为这些是默认的 eb 设置 我之前使用app.py
和app
已经能够成功运行应用程序
@kms 您之前可能更改过默认设置。您的 EB 显然在寻找 application
: "ModuleNotFoundError: No module named 'application'"。以上是关于Flask 应用程序 - 部署到 AWS Elastic Beanstalk 时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SSL 将 AWS EC2 Flask 应用程序部署到 HTTPS 端口 443?
尝试将 Flask 应用程序部署到 AWS Elastic Beanstalk 时,我不断收到“ModuleNotFoundError: No module named 'app'”错误消息
尝试使用 SSL 将 Flask 应用程序部署到 AWS Beanstalk:没有可用的包 mod24_ssl
将使用 Celery 和 Redis 的 Flask 应用程序部署到 AWS:直接使用 Elastic Beanstalk 还是 EC2?