Parece que já existem algumas perguntas aqui sobre a importação relativa no python 3, mas depois de passar por muitas delas, ainda não encontrei a resposta para o meu problema. Então aqui está a questão.
Eu tenho um pacote mostrado abaixo
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
e eu tenho uma única linha no test.py:
from ..A import foo
agora, estou na pasta de package
e corro
python -m test_A.test
Eu recebi mensagem
"ValueError: attempted relative import beyond top-level package"
mas se eu estiver na pasta pai de package
, por exemplo, eu corro:
cd ..
python -m package.test_A.test
tudo está bem.
Agora, minha pergunta é:
quando estou na pasta de package
e executo o módulo dentro do subpacote test_A test_A.test
, pois , com base no meu entendimento, ..A
sobe apenas um nível, que ainda está dentro da package
pasta, por que ele diz uma mensagem beyond top-level package
. Qual é exatamente o motivo que causa essa mensagem de erro?