Il semble qu'il y ait déjà pas mal de questions ici sur l'importation relative dans python 3, mais après avoir parcouru bon nombre d'entre elles, je n'ai toujours pas trouvé la réponse à mon problème. voici donc la question.
J'ai un package ci-dessous
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
et j'ai une seule ligne dans test.py:
from ..A import foo
maintenant, je suis dans le dossier de package
, et je lance
python -m test_A.test
J'ai un message
"ValueError: attempted relative import beyond top-level package"
mais si je suis dans le dossier parent de package
, par exemple, je lance:
cd ..
python -m package.test_A.test
tout va bien.
Maintenant, ma question est:
quand je suis dans le dossier de package
, et que j'exécute le module à l'intérieur du sous-package test_A car test_A.test
, selon ma compréhension, ..A
monte d'un seul niveau, qui est toujours dans le package
dossier, pourquoi il donne un message disant beyond top-level package
. Quelle est exactement la raison qui provoque ce message d'erreur?