Importation relative au-delà du package de niveau supérieur
Lors d'une tentative d'importation relative dans un package Python multi-niveaux, exécution du module à partir du répertoire du package peut entraîner l'erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur ». Comprendre la raison de cette erreur est crucial pour une gestion efficace des packages.
L'erreur se produit car Python ne conserve pas d'enregistrement de l'endroit à partir duquel les packages sont chargés. L'exécution d'un module en tant que "python -m test_A.test" informe essentiellement Python que test_A.test ne se trouve pas dans un package (bien qu'il réside dans package/test_A). Par conséquent, tenter "from ..A import foo" devient invalide car Python ne sait pas que test_A fait partie d'un package plus grand.
En revanche, l'utilisation de "python -m package.test_A.test" préserve la structure hiérarchique. et permet à "from ..A import foo" de se résoudre avec succès. Cela reflète avec précision le fait que test_A est un répertoire enfant dans le package chargé "package".
La raison sous-jacente pour laquelle Python ne considère pas le répertoire de travail actuel comme un package est inconnue. Cependant, cette limitation peut être atténuée en déclarant explicitement les répertoires comme packages à l'aide du fichier "__init__.py" et en adhérant au mécanisme de recherche de packages de Python lors de l'importation de modules.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3