Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
3907

Разбираемся с относительными импортами в Python

Одной из особенностей языка программирования Python является возможность использования относительных импортов. Это означает, что при импортировании

Одной из особенностей языка программирования Python является возможность использования относительных импортов. Это означает, что при импортировании модуля или пакета, Python позволяет указать путь к нему относительно текущего модуля.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Рассмотрим пример. Представим следующую структуру пакета:

my_package/
    __init__.py
    subpackage1/
        __init__.py
        module1.py
    subpackage2/
        __init__.py
        module2.py

Если необходимо импортировать функцию из module1.py в module2.py, то можно сделать это с помощью относительного импорта следующим образом:

from ..subpackage1.module1 import my_function

Две точки в начале пути означают, что импорт будет производиться из родительского каталога текущего пакета.

Однако, при работе с относительными импортами, часто возникает ошибка ImportError: attempted relative import with no known parent package. Это означает, что Python не смог определить, к какому пакету относится текущий модуль, и не знает, откуда начинать относительный импорт.

Понятие «пакет» в Python означает каталог, содержащий файл __init__.py и другие модули. Пакет позволяет группировать связанные модули вместе, обеспечивая удобную организацию кода.

Чтобы избежать ошибки с относительными импортами, необходимо убедиться, что текущий модуль является частью пакета. Это можно сделать, запустив Python с ключом -m и указав полное имя модуля. Например, если файл module2.py находится в пакете my_package.subpackage2, его следует запускать следующим образом:

python -m my_package.subpackage2.module2

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Такой подход позволит Python корректно определить позицию модуля в иерархии пакета и успешно выполнить относительный импорт.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий