Пакети простору імен

Оновлено: 28.04.2023

Пакет простору імен — це сукупність різноманітних частин, де кожна частина додає підпакет до батьківського пакета. Частини можуть знаходитися в різних місцях файлової системи. Частини також можна знайти в zip-файлах, у мережі чи будь-де ще, де Python шукає під час імпорту. Пакети простору імен можуть або не можуть відповідати безпосередньо об’єктам у файловій системі; вони можуть бути віртуальними модулями, які не мають конкретного представлення.

Пакунки простору імен не використовують звичайний список для свого атрибута __path__. Натомість вони використовують настроюваний ітерований тип, який автоматично виконає новий пошук частин пакета під час наступної спроби імпорту в цьому пакеті, якщо шлях до їх батьківського пакета (або sys.path для пакета верхнього рівня) зміниться.

У пакетах простору імен немає файлу parent/__init__.py. Насправді під час пошуку імпорту може бути знайдено кілька батьківських каталогів, де кожен надається окремою частиною. Таким чином, батьківський/один може фізично не знаходитися поруч із батьківським/два. У цьому випадку Python створюватиме пакет простору імен для батьківського пакета верхнього рівня кожного разу, коли він або один із його підпакетів імпортується.

Дивіться також PEP 420 для специфікації пакета простору імен.