← Все вопросы

Зачем нужен файл __init__.py в папке с модулями?

Задан 3 месяца назад831 просмотров3 ответа
13

Вижу в проектах пустые файлы __init__.py в каждой папке. Что они делают и обязательно ли их добавлять?

3 ответа

20

__init__.py помечает папку как пакет — то есть как набор модулей, который можно импортировать (from mypackage import utils). Он выполняется при первом импорте пакета, поэтому в нём удобно:

  • задавать, что экспортируется (переменная __all__);
  • подтягивать вложенные модули наверх, чтобы писать короче (from mypackage import thing вместо from mypackage.module import thing);
  • класть код инициализации пакета.

Чаще всего он просто пустой — и этого достаточно. Формально с Python 3.3+ появились «namespace packages» и без __init__.py импорт во многих случаях тоже сработает, но добавлять его — хорошая привычка: меньше сюрпризов с инструментами и однозначно понятно, что это пакет.

Алиса Михайлова думал это какой-то магический файл, а он просто помечает пакет, спасибо · 3 месяца назад
9

Он превращает папку в пакет, который можно импортировать. Обычно пустой.

4

Раньше без него импорт папки вообще не работал. Сейчас не всегда обязателен, но лучше ставить.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект