Колба («приложение») против флакона (__ name__)

В официальном Quickstart рекомендуется использовать __name__ при использовании одного модуля :

  1. … Если вы используете один модуль (как в этом примере), вы должны использовать __name__ потому что в зависимости от того, запущен он как приложение или импортирован как модуль, имя будет отличаться ( '__main__' против фактического имени импорта). …

Однако в своем документе API рекомендуется жесткое кодирование, когда мое приложение представляет собой пакет :

Поэтому важно то, что вы там предоставляете. Если вы используете один модуль, __name__ всегда является правильным значением. Если вы, однако, используете пакет, обычно рекомендуется указывать название своего пакета.

Я могу понять, почему лучше жестко указывать имя моего пакета, но почему бы не жестко обозначить имя одного модуля? Или, другими словами, какая информация может получить Flask когда она получает __main__ качестве своего первого параметра? Я не вижу, как это может облегчить для Flask поиск ресурсов …

One Solution collect form web for “Колба («приложение») против флакона (__ name__)”

__name__ – это просто удобный способ получить имя импорта места, в котором определено приложение. Flask использует имя импорта, чтобы знать, где искать ресурсы, шаблоны, статические файлы, папку экземпляра и т. Д. При использовании пакета, если вы определяете свое приложение в __init__.py то __name__ все равно укажет на «правильное» место где находятся ресурсы. Однако, если вы определите его в другом месте, например mypackage/app.py , то с помощью __name__ скажет Flask искать ресурсы по сравнению с mypackage.app вместо mypackage .

Использование __name__ не является ортогональным «жесткому кодированию», это просто сокращение от использования имени пакета. И также нет оснований говорить, что имя должно быть базовым пакетом, это полностью зависит от вашей структуры проекта.

  • SQLAlchemy / WTForms: задает выбранное значение по умолчанию для QuerySelectField
  • Как отправить изображение, сгенерированное PIL в браузер?
  • Python Flask Как получить параметры из URL?
  • FLASK Ошибка импорта с модулем запроса
  • Python - лучший язык программирования в мире.