Введение в пакеты модулей Python
О чем мы говорим?
Помимо возможности импортировать имя модуля существует возможность импортировать имена каталогов. Каталог, в терминологии Python, является пакетом, поэтому такая операция импортирования называется импортированием пакетов. Такая операция, по сути, превращает имя каталога в в разновидность пространства имен, в котором атрибутами являются подкаталоги и файлы модулей.
Импортирование пакетов
Как же работает импортирование пакетов? В инструкциях import и from можно указать список имен в пути к каталогу, разделяя их символами точки:
import dir1.dir2.modили так:
from dir3.dir4.mod import xСуществует еще одно условие, которое необходимо соблюдать: каждый каталог пути, указанный в инструкции импортирования пакета, должен содержать файл с именем __init__.py, в противном случае операция импортирования завершится неудачей.
Файлы __init__.py могут содержать программный код на языке Python, как любые другие файлы модулей. Отчасти они являются объявлениями для интерпретатора, и могут вообще ничего не содержать. Эти файлы, будучи объявлениями, предотвращают неумышленное сокрытие в каталогах с совпадающими именами истинно требуемых модулей. Без этого механизма интерпретатор мог бы выбирать каталоги, которые не имеют никакого отношения к вашему программному коду только потому, что в пути поиска они появляются ранее.
Заключение
Операция импортирования пакетов содержит некоторые сведения о структуре каталогов, упрощая тем самым поиск файлов и выступая организационным инструментом. пакеты не только делают операцию импортирования более осмысленной в крупных программах, но еще и упрощают настройку пути поиска, а также позволяют разрешить возникающие неоднозначности в тех случаях, когда существует более одного модуля с одним и тем же именем.
