Wygląda na to, że istnieje już sporo pytań o względny import w Pythonie 3, ale po przejściu przez wiele z nich wciąż nie znalazłem odpowiedzi na mój problem. , więc tutaj jest pytanie.poza błędem pakietu najwyższego poziomu w względnym imporcie
Mam pakiet przedstawiony 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 biegnę
python -m test_A.test
Otrzymałem wiadomość
"ValueError: attempted relative import beyond top-level package"
ale jeśli jestem w katalogu nadrzędnego package
, na przykład, biegnę:
cd ..
python -m package.test_A.test
wszystko jest w porządku.
teraz moje pytanie brzmi: kiedy jestem w folderze package
i uruchomić moduł wewnątrz test_A sub-pakietu jako test_A.test
, w oparciu o moje zrozumienie, ..A
idzie się tylko jeden poziom, który jest nadal w ramach package
folder, dlaczego daje komunikat z informacją: beyond top-level package
. Jaki jest dokładnie powód, który powoduje ten komunikat o błędzie?
możliwe duplikat [Jak zrobić względną przywozu w Pythonie?] (Http://stackoverflow.com/questions/72852/how-to- do-relative-import-in-python) – SimKev2
ten wpis nie wyjaśnił mojego błędu "poza pakietem najwyższego poziomu" – shelper
Mam tu pewną myśl, więc kiedy uruchom test_A.test jako moduł, ".." przechodzi powyżej test_A, co jest już najwyższy poziom test_Atest importu, myślę, że poziom pakietu nie jest poziomem katalogu, ale ile poziomów importujesz pakiet. – shelper