Почему в Python возникает ошибка “attempted relative import with no known parent package”?
При организации проекта с несколькими каталогами и модулями в Python не получается использовать относительные импорты. Пробовал через sys.path, но это не помогает, а при попытке относительного импорта возникает ошибка:
или
Что делать, чтобы модули из соседних папок корректно импортировались?
9 часов назад
Nikolai Gagarinov
Ответы
В Python относительные импорты работают только внутри пакетов, то есть директорий с файлом __init__.py, и когда модуль запускается как часть пакета. Если запустить отдельный скрипт напрямую (python module.py), относительные импорты не сработают.
- Структура проекта должна быть пакетной:
- Относительные импорты пишутся внутри пакетов:
- Запуск через пакет:
или запускать скрипт из корня проекта (project/) так, чтобы Python видел пакеты.
- Избегать изменения
sys.path— это считается плохой практикой и может привести к непредсказуемым ошибкам.
Замечание: иногда IDE вроде PyCharm корректно подхватывают пути пакетов, а VS Code нет. Всегда проверяйте запуск из командной строки с правильным рабочим каталогом.
9 часов назад
Nikolai Gagarinov