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 packagee 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 packagee executo o módulo dentro do subpacote test_A test_A.test, pois , com base no meu entendimento, ..Asobe apenas um nível, que ainda está dentro da packagepasta, por que ele diz uma mensagem beyond top-level package. Qual é exatamente o motivo que causa essa mensagem de erro?