0

我已经开始使用 Flasks Blueprints 开发基于 Flask 的 API。这就像一个魅力。然后我开始重构它,使用 connexion 和 swagger 规范。之后,我无法启动该应用程序。我收到以下错误消息:

Use "FLASK_APP={module}:name to specify one.'.format(module=module.__name__)
flask.cli.NoAppException: Failed to find Flask application or factory in module "api.app". Use "FLASK_APP=api.app:name to specify one.

使用的版本:

  • Python 3.7.6
  • 连接 2.7.0
  • 烧瓶 1.1.2

我的结构看起来像:

api
 |-.flaskenv
 |- init.py
 |- app.py
 

.flaskenv

FLASK_APP=app.py
FLASK_ENV=development

_初始化_.py

# from flask import Blueprint
# bp = Blueprint("api", __name__)
# from api import endpoints  # , errors  # noqa F401, errors, tokens

应用程序.py

# from flask import Flask
# from api import bp as api_bp
import connexion


# app = Flask(__name__)
# app.register_blueprint(api_bp, url_prefix="/api")
app = connexion.FlaskApp(__name__, specification_dir="./")
app.add_api("swagger.yml")

启动(在我的 venv 内):

flask run --no-debugger

如果我取消注释经典的 Flask 编码(并对连接编码进行注释),一切正常,并且可以访问端点。

我还检查了当时可用的环境变量app = connexion.FlaskApp(__name__, specification_dir="./")被调用。有.flaskenv可用的值。

据我了解,connexion已经Flask捆绑,并且在使用 class 时FlaskApp,它正在创建一个类似于 vanilla Flask 框架的应用程序。

我的示例与connexion 文档中的示例相同。

我不知道为什么香草烧瓶创建应用程序和连接不...

谢谢。

迈贝克

4

1 回答 1

1

解决方案

app.py必须扩展一行以公开 Flask 类对象:application = app.app

app.py

import connexion

app = connexion.App("__name__", specification_dir="./")
app.add_api("swagger.yml")
application = app.app
于 2020-06-22T08:09:11.120 回答