Maison >développement back-end >Tutoriel Python >Pourquoi est-ce que j'obtiens une erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur » en Python ?
Erreur d'importation relative : au-delà du package de niveau supérieur
Dans Python 3, les importations relatives offrent un moyen pratique de faire référence à des modules au sein du même répertoire ou package. Cependant, rencontrer une erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur » peut être déroutant.
Considérez la structure de package suivante :
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
Lorsque vous tentez d'importer un module à partir d'un sous-package (par exemple, from ..A import foo dans test.py), vous pouvez rencontrer l'erreur susmentionnée si les conditions suivantes sont rencontré :
La raison de cette erreur provient d'un aspect fondamental du mécanisme d'importation de Python. Lorsqu'un package est chargé, il est considéré comme un « package de niveau supérieur » et les importations relatives ne peuvent référencer que les modules de ce package ou de ses sous-packages. Cependant, Python ne reconnaît pas automatiquement le répertoire parent du package en tant que package lors de l'exécution directe d'un module.
Par conséquent, dans le scénario ci-dessus, lorsque vous exécutez python -m test_A.test à partir du répertoire du package, le parent ('package/') n'est pas considéré comme un package, et l'importation relative depuis ..A import foo tente effectivement d'aller au-delà du package de niveau supérieur.
Pour résoudre cette erreur, assurez-vous d'avoir spécifiez le chemin complet du package lors de l'exécution du module :
python -m package.test_A.test
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!