Я читаю учебник Flask и узнал, что в большой структуре приложения код перемещается из одного файла app.py
в 'функцию фабрики приложений' create_app
в файле _init_.py
, затемСервер может быть запущен следующим образом:
export FLASK_APP=flaskr
export FLASK_ENV=development
flask run
Интересно, как работает последняя команда за сценой, поскольку в коде нет явного вызова этой фабричной функции, следовательно, приложение не возвращено?
Другой Flask doc пытается объяснить, почему используется такая структура проекта, но в этом случае код в _init_.py
явно создает app
:
from flask import Flask
app = Flask(__name__)
import yourapplication.views
python doc говорит:
Файлы init .py необходимы для того, чтобы Python рассматривал каталоги как содержащие пакеты;это сделано для предотвращения непреднамеренного скрытия действительными модулями каталогов с общим именем, например, строки, которые встречаются позже (глубже) в пути поиска модулей.В простейшем случае init .py может быть просто пустым файлом, но он также может выполнить код инициализации для пакета или установить переменную all , как описано ниже.
В последнем предложении упоминается «код инициализации», который можно применить во втором случае (и простая структура проекта с файлом app.py
), но я не смог применить его к первому случаю.