Відносний імпорт пакетів
Оновлено: 28.04.2023
Для відносного імпорту використовуються крапки на початку. Одна крапка на початку вказує на відносний імпорт, починаючи з поточного пакета. Дві або більше крапок на початку вказують на відносний імпорт до батьківського(их) пакета(ів) поточного пакета, один рівень на кожну крапку після першого. Наприклад, враховуючи такий макет пакета:
package/
__init__.py
subpackage1/
__init__.py
moduleX.py
moduleY.py
subpackage2/
__init__.py
moduleZ.py
moduleA.py
У subpackage1/moduleX.py або subpackage1/__init__.py наступні дійсні відносні імпорти:
from .moduleY import spam
from .moduleY import spam as ham
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo
Абсолютний імпорт може використовувати або синтаксис import <> або from <> import <>, але відносний імпорт може використовувати лише другу форму; причина цього в тому, що:
import XXX.YYY.ZZZ
має показувати XXX.YYY.ZZZ як придатний вираз, але .moduleY не є дійсним виразом.