Importation relative au-delà du package de niveau supérieur
Lors d'une tentative d'importation relative dans un package Python à plusieurs 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 en tant que 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!