Wygląda na to, że jest już sporo pytań na temat względnego importu w Pythonie 3, ale po przejściu wielu z nich nadal nie znalazłem odpowiedzi na mój problem. więc oto pytanie.
Mam pakiet pokazany poniżej
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
i mam jedną linię w test.py:
from ..A import foo
teraz jestem w folderze package
i biegam
python -m test_A.test
Dostałem wiadomość
"ValueError: attempted relative import beyond top-level package"
ale jeśli jestem w folderze nadrzędnym package
np. uruchamiam:
cd ..
python -m package.test_A.test
wszystko w porządku.
Teraz moje pytanie brzmi:
kiedy jestem w folderze package
i uruchamiam moduł w sub-pakiecie test_A, ponieważ test_A.test
, zgodnie z moim zrozumieniem, ..A
idzie tylko o jeden poziom, który wciąż znajduje się w package
folderze, dlaczego wyświetla komunikat beyond top-level package
. Jaki jest dokładnie powód, który powoduje ten komunikat o błędzie?