Кажется, здесь уже есть несколько вопросов об относительном импорте в Python 3, но, пройдя многие из них, я так и не нашел ответа на свой вопрос. так вот в чем вопрос.
У меня есть пакет, показанный ниже
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
и у меня есть одна строка в test.py:
from ..A import foo
Теперь я в папке package
, и я бегу
python -m test_A.test
Я получил сообщение
"ValueError: attempted relative import beyond top-level package"
но если я нахожусь в родительской папке package
, например, я запускаю:
cd ..
python -m package.test_A.test
все хорошо.
Теперь мой вопрос:
когда я нахожусь в папке package
и запускаю модуль внутри подпакета test_A, так как test_A.test
, исходя из моего понимания, ..A
поднимается только на один уровень, который все еще находится внутри package
папки, почему он выдает сообщение, говорящее beyond top-level package
. В чем именно причина этого сообщения об ошибке?