Imaginez la structure de répertoires suivante :
app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py
Pour importer quelque chose du mod2 dans le module mod1, le code suivant a été tenté :
from ..sub2 import mod2
Cependant, cela entraîne l'erreur : "Tentative d'importation relative dans un non-package."
L'erreur se produit car en exécutant le module en tant que __main__ en passant l'argument mod1.py à l'interpréteur, Python le traite comme un module de niveau supérieur, ignorant le package informations.
Pour résoudre ce problème, les fichiers __init__.py doivent être correctement initialisés dans les répertoires sub1 et sub2. Cela signifie que ces répertoires sont effectivement des packages, et nous pouvons les importer à l'aide d'importations relatives.
Avec les fichiers __init__.py en place, le code suivant importera avec succès mod2 dans mod1 :
from ..sub2 import mod2
PEP 366 propose un mécanisme de référencement des modules par rapport au principal modules. Dans Python 2.6 et les versions ultérieures, vous pouvez importer des modules relatifs au module principal en utilisant la syntaxe suivante :
from . import mod2 from .. import sub2
Ce comportement s'aligne sur la fonctionnalité attendue pour les importations de sous-packages, garantissant un mécanisme d'importation cohérent et intuitif.
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!