Maison > développement back-end > Tutoriel Python > Pourquoi Python renvoie-t-il une erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur » et comment l'éviter ?

Pourquoi Python renvoie-t-il une erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur » et comment l'éviter ?

Barbara Streisand
Libérer: 2024-11-21 09:24:11
original
411 Les gens l'ont consulté

Why Does Python Throw a

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal