Как выполнить относительный импорт библиотеки в Python?

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

Существует несколько способов выполнить относительный импорт в Python, я расскажу о двух самых распространенных способах:

1. **Относительный импорт модуля:**

Предположим, у вас есть следующая структура проекта:

project/
    __init__.py
    main.py
    utils/
        __init__.py
        helper.py

Если вы хотите импортировать модуль helper.py в файл main.py, вы можете сделать это следующим образом:

from .utils import helper

В данном случае . означает текущий пакет или модуль, из которого происходит импорт.

2. **Относительный импорт пакета:**

Если вам нужно импортировать пакет, находящийся в другом месте относительно текущего модуля, вы можете использовать дополнительные точки для указания уровня иерархии. Например, если у вас есть структура:

project/
    __init__.py
    package/
        __init__.py
        module.py
    subpackage/
        __init__.py
        sub_module.py
    main.py

Из модуля main.py вы хотите импортировать модуль module.py, который находится в пакете package, вы можете сделать это так:

from .package import module

В данном случае . указывает на текущий пакет, а затем имя пакета, относительно которого вы выполняете импорт.

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