/
Вопросы и ответы
/
Python
/

Почему в Python возникает ошибка “attempted relative import with no known parent package”?

Почему в Python возникает ошибка “attempted relative import with no known parent package”?

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

ImportError: attempted relative import with no known parent package

или

ModuleNotFoundError

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

9 часов назад

Nikolai Gagarinov

Ответы

0

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

  1. Структура проекта должна быть пакетной:
project/
├── package1/
│   ├── **init**.py
│   └── module1.py
├── package2/
│   ├── **init**.py
│   └── module2.py
└── main.py
  1. Относительные импорты пишутся внутри пакетов:
# внутри package2/module2.py
from ..package1.module1 import func
  1. Запуск через пакет:
python -m package2.module2

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

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

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

9 часов назад

Nikolai Gagarinov