Колба («приложение») против флакона (__ 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__ не является ортогональным «жесткому кодированию», это просто сокращение от использования имени пакета. И также нет оснований говорить, что имя должно быть базовым пакетом, это полностью зависит от вашей структуры проекта.

  • FLASK Ошибка импорта с модулем запроса
  • Многоязычная фляга
  • Как отправить изображение, сгенерированное PIL в браузер?
  • Как использовать поле FieldList WFForms для FormFields?
  • SQLAlchemy / WTForms: задает выбранное значение по умолчанию для QuerySelectField
  •  
    Interesting Posts for Van-Lav

    Запуск py.test на микропитоне

    Лучший способ обработки list.index (возможно, не существует) в python?

    matplotlib: отображение временных рядов при прохождении через периоды без данных

    Python RPM, который я построил, не будет устанавливать

    Используя PIL и NumPy, чтобы преобразовать изображение в массив Lab, измените значения, а затем выполните обратное

    Python – Лучшая библиотека графического интерфейса для работы?

    Настройка Django с базой данных MS SQL Server

    Вызовите C ++ opencv-функции из Python (отправьте cv :: Mat в C ++ dll, использующую opencv)

    Как изменить переменную после того, как она уже определена в Python

    Удалить объект из списка объектов в python

    Установка PIL с поддержкой JPEG в Mac OS X

    Django, шаблонные контекстные процессоры

    Arff Loader: AttributeError: объект 'dict' не имеет атрибутов 'data'

    Как создать новый auth_user и auth_group на Web2py, запущенном в Google App Engine (GAE)?

    Загрузка данных из Yahoo! Финансы с пандами

    Python - лучший язык программирования в мире.