Maison > Article > développement back-end > Pourquoi Python renvoie-t-il une erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur » ?
Erreur de package au-delà du niveau supérieur lors de l'importation relative
Lors d'une tentative d'importation relative au-delà du package de niveau supérieur, Python renvoie une erreur « ValueError : tentative erreur d'importation relative au-delà du package de niveau supérieur. Pour comprendre la cause, analysons la structure du package fournie :
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
Dans test.py, la ligne de ..A import foo tente d'importer depuis le sous-paquet A, qui n'est pas directement accessible depuis le test_A sous-paquet. Python nécessite que les importations relatives restent dans la portée du package actuel.
Lors de l'exécution de python -m test_A.test à partir du dossier du package, Python interprète test_A.test comme un module dans le package actuel. Cependant, il ne considère plus le package comme un package puisque l'option -m appelle directement le module. Cela entraîne la tentative d'importation relative allant au-delà du package de niveau supérieur (package), déclenchant ainsi l'erreur.
En revanche, lors de l'exécution de python -m package.test_A.test à partir du dossier parent, Python reconnaît le package en tant que package et permet des importations relatives dans sa portée. Ceci est résolu avec succès à partir de ..A import foo car le sous-package A est accessible dans le package package.
Cette erreur souligne l'importance de garantir que les importations relatives restent dans la portée du package actuel. Lors de l'appel de modules directement à l'aide de l'option -m, Python ne considère pas le répertoire de travail actuel comme un package, ce qui peut entraîner des erreurs comme celle rencontrée.
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!