Importations relatives en Python
En Python, importer des modules à partir d'un package peut être une tâche délicate. Considérez la structure de répertoires suivante :
app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py
Supposons que vous travaillez sur mod1.py et que vous deviez importer quelque chose depuis mod2.py. Vous pouvez essayer :
from ..sub2 import mod2
Cependant, cela entraîne une erreur "Tentative d'importation relative dans un non-package". La solution réside dans le fait que Python interprète les modules exécutés en tant que __main__ (par exemple, python mod1.py) comme des modules de niveau supérieur, quel que soit leur emplacement dans le système de fichiers.
Pour activer les importations relatives, le module d'importation ne doit pas être exécuté en tant que __main__. Cela peut être accompli en exécutant l'interpréteur avec un package comme module principal :
python -m app.sub1.mod1
Vous pouvez également utiliser l'attribut __package__ pour spécifier manuellement le package parent :
import sys sys.path.insert(0, '..') from sub2.mod2 import MyClass
Ceci La méthode manipule le chemin système, mais elle ne nécessite pas d'exécuter le module en tant que __main__.
Cependant, pour que les importations relatives fonctionnent dans les sous-packages, il est important de s'assurer que les fichiers __init__.py sont présents dans chaque répertoire. Ces fichiers agissent comme des marqueurs de package et permettent à l'attribut __package__ de référencer le package contenant.
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!