import package.module (указывается полный путь от корня проекта).
    from . import module (импорт модуля в том же пакете).from .. import module (импорт модуля из родительского пакета).from .module import some_function (импорт конкретной функции из модуля в том же пакете).Импорт модуля в рамках пакета в Python можно осуществить несколькими способами, каждый из которых имеет свои особенности и область применения. Предположим, у нас есть следующая структура пакета:
  my_package/
  ├── __init__.py
  ├── module_a.py
  └── sub_package/
      ├── __init__.py
      └── module_b.py
  
  Вот несколько способов импорта module_b в module_a:
# my_package/module_a.py
from .sub_package import module_b
# или
from .sub_package.module_b import some_function # импорт конкретной функции
module_b.some_function()
      . означает текущий пакет, .. означает родительский пакет и т.д.
# my_package/module_a.py
import my_package.sub_package.module_b
my_package.sub_package.module_b.some_function()
      Этот способ менее гибкий, так как требует знания полного пути до модуля и более громоздкий.
# my_package/module_a.py (не рекомендуется и не работает в Python 3)
import sub_package.module_b # избегайте этого
      Рекомендации:
from . import ...) внутри пакета для улучшения читаемости и переносимости.__init__.py:
Файлы __init__.py служат для обозначения каталогов как пакетов Python. Они могут быть пустыми или содержать код инициализации для пакета, например, экспорт определенных символов из подмодулей для удобного доступа:
# my_package/__init__.py
from .module_a import some_function_from_a # экспортируем функцию из module_a
Тогда можно будет использовать:
import my_package
my_package.some_function_from_a()