Відносний імпорт пакетів

Оновлено: 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 не є дійсним виразом.