Относительный импорт за пределы пакета верхнего уровня
При попытке относительного импорта в многоуровневом пакете Python запуск модуля из каталога пакета может привести к ошибке «ValueError: попытка относительного импорта за пределы пакета верхнего уровня». Понимание причины этой ошибки имеет решающее значение для эффективного управления пакетами.
Ошибка возникает из-за того, что Python не ведет учет того, откуда загружаются пакеты. Выполнение модуля как «python -m test_A.test» по сути сообщает Python, что test_A.test не находится внутри пакета (несмотря на то, что он находится в package/test_A). Следовательно, попытка «из ..A import foo» становится недействительной, поскольку Python не знает, что test_A является частью более крупного пакета.
Напротив, использование «python -m package.test_A.test» сохраняет иерархическую структуру. и позволяет успешно разрешить «from ..A import foo». Это точно отражает тот факт, что test_A является дочерним каталогом внутри загруженного пакета «пакет».
Основная причина, по которой Python не считает текущий рабочий каталог пакетом, неизвестна. Однако это ограничение можно облегчить, явно объявив каталоги как пакеты с помощью файла «__init__.py» и придерживаясь механизма поиска пакетов Python при импорте модулей.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3