. (одна точка): Относительно текущего модуля... (две точки): Относительно родительского модуля.... (три точки) и далее: Относительно предков родительского модуля.package.module1 можно использовать from . import module2 для импорта package.module2 или from .. import module3 для импорта package.module3, если package является подпакетом другого пакета. Относительные импорты работают только в рамках пакетов. Они не работают в скриптах, запускаемых напрямую (__name__ == '__main__').
В Python импорт из относительных путей позволяет импортировать модули и пакеты, находящиеся в той же директории или в родительских/дочерних директориях, без необходимости указывать полные пути к этим модулям.
Ключевым элементом для работы с относительными импортами является использование операторов . (точка) и .. (две точки).
. (одна точка) указывает на текущую директорию (текущий пакет).  Например, если вы находитесь в модуле package.module_a, то from . import module_b импортирует модуль module_b, находящийся в той же директории, что и module_a, то есть в package... (две точки) указывают на родительскую директорию.  Например, from .. import module_c из модуля package.subpackage.module_d импортирует module_c, находящийся в директории, родительской для subpackage, то есть в package.  Можно использовать больше точек для перехода по иерархии выше: ... указывает на директорию, родительскую для родительской, и так далее.Важно:
__init__.py (который может быть пустым, но должен существовать).python -m package.module_name.Пример структуры проекта:
my_project/ ├── package/ │ ├── __init__.py │ ├── module_a.py │ ├── module_b.py │ └── subpackage/ │ ├── __init__.py │ └── module_c.py └── main.py
Пример использования относительных импортов:
В package/module_a.py:
 from . import module_b  # Импортирует package.module_b
 from .subpackage import module_c # Импортирует package.subpackage.module_c
 def my_function():
  module_b.another_function()
  module_c.yet_another_function()
  В package/subpackage/module_c.py:
 from .. import module_b  # Импортирует package.module_b
 def yet_another_function():
  module_b.another_function()
  Почему это важно?
Понимание относительных импортов позволяет создавать хорошо структурированные, модульные и переносимые Python-проекты.