соединение: не удалось найти приложение или фабрику Flask в модуле - PullRequest
0 голосов
/ 19 июня 2020

Я начал разрабатывать API на основе Flask, используя Flasks Blueprints. Это сработало как шарм. Затем я начал его реорганизовывать, чтобы использовать связь и спецификацию чванства. После этого я не могу запустить приложение. Я получаю следующее сообщение об ошибке:

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
  • connection 2.7.0
  • Flask 1.1.2

Моя структура выглядит так:

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

.flaskenv

FLASK_APP=app.py
FLASK_ENV=development

_ init_ .py

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

app.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

Если я раскомментирую classi c Flask кодирование (и комментарий к кодировке соединения), все работает, и конечные точки доступны.

Я также проверил переменные среды, доступные в момент вызова app = connexion.FlaskApp(__name__, specification_dir="./"). Доступны значения из .flaskenv.

Насколько я понимаю, connexion имеет Flask в комплекте, и при использовании класса FlaskApp создается приложение, подобное ванильной Flask framework.

Мой пример такой же, как в документации по подключению .

Понятия не имею, почему vanilla Flask создает приложение, а подключение нет ...

Спасибо.

mybecks

1 Ответ

0 голосов
/ 22 июня 2020

Решение

app.py должно быть расширено на одну строку, чтобы предоставить объект класса Flask: application = app.app

app.py

import connexion

app = connexion.App("__name__", specification_dir="./")
app.add_api("swagger.yml")
application = app.app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...