__init__.py).from . import имя_модуля (для импорта модуля в том же пакете) или from .. import имя_модуля (для импорта модуля из родительского пакета).  Количество точек указывает уровень иерархии.python -m mypackage.mymodule).Относительные импорты используются для импорта модулей, находящихся в том же пакете, без необходимости указывать полный путь к пакету.
Как они работают:
Относительные импорты начинаются с одной или нескольких точек (.). 
Одна точка (.) означает текущий каталог (относительно модуля, в котором делается импорт).
Две точки (..) означают родительский каталог.
Три точки (...) означают каталог, находящийся на два уровня выше и так далее.
Пример структуры пакета:
    
      my_package/
      ├── __init__.py
      ├── module_a.py
      └── subpackage/
          ├── __init__.py
          └── module_b.py
    
  
  Примеры использования относительных импортов:
В module_b.py (внутри subpackage):
    
      # Импортирует module_a из родительского пакета (my_package)
      from .. import module_a
      # Импортирует что-то конкретное из module_a
      from ..module_a import my_function
      # Импортирует текущий модуль subpackage
      from . import some_local_function
      # Или тоже самое по имени, но без необходимости знать __init__.py:
      from . import module_b
    
  
  В module_a.py (внутри my_package):
    
      # Импортирует module_b из подпакета subpackage
      from .subpackage import module_b
      # Импортирует что-то конкретное из module_b
      from .subpackage.module_b import another_function
    
  
  Важно:
Относительные импорты работают только внутри пакетов. Пакет определяется наличием файла __init__.py в директории.
Нельзя использовать относительные импорты в скрипте, который запускается напрямую (например, python module_a.py).  В этом случае Python считает, что это не часть пакета, и относительные импорты работать не будут.  Нужно запускать модуль как часть пакета (например, используя python -m my_package.module_a).
Рекомендуется использовать абсолютные импорты везде, где это возможно. Относительные импорты полезны для рефакторинга и переноса кода внутри пакета, но при этом они могут сделать код менее читаемым и сложным в поддержке, если используются чрезмерно.
Преимущества относительных импортов:
Упрощают перенос и рефакторинг кода внутри пакета.
Делают код более независимым от абсолютного пути к пакету.
Недостатки относительных импортов:
Могут сделать код менее читаемым, особенно при использовании множества точек.
Могут привести к проблемам при запуске скриптов напрямую.
Сложность в понимании того, какой модуль импортируется, не зная структуру пакета.