Почему в Python возникает ошибка “attempted relative import with no known parent package”? — Q&A Хекслет
2026-02-26 23:06 Diff

При организации проекта с несколькими каталогами и модулями в Python не получается использовать относительные импорты. Пробовал через sys.path, но это не помогает, а при попытке относительного импорта возникает ошибка:

или

Что делать, чтобы модули из соседних папок корректно импортировались?

Ответы

В Python относительные импорты работают только внутри пакетов, то есть директорий с файлом __init__.py, и когда модуль запускается как часть пакета. Если запустить отдельный скрипт напрямую (python module.py), относительные импорты не сработают.

  1. Структура проекта должна быть пакетной:
  1. Относительные импорты пишутся внутри пакетов:
  1. Запуск через пакет:

или запускать скрипт из корня проекта (project/) так, чтобы Python видел пакеты.

  1. Избегать изменения sys.path — это считается плохой практикой и может привести к непредсказуемым ошибкам.

Замечание: иногда IDE вроде PyCharm корректно подхватывают пути пакетов, а VS Code нет. Всегда проверяйте запуск из командной строки с правильным рабочим каталогом.