← Все вопросы
Зачем нужен файл __init__.py в папке с модулями?
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
Раньше без него импорт папки вообще не работал. Сейчас не всегда обязателен, но лучше ставить.
Ваш ответ
Войдите, чтобы ответить на вопрос.