Maison >développement back-end >Tutoriel Python >Comment implémenter de manière fiable des importations relatives en Python ?
Implémentation des importations relatives en Python
Lorsque vous travaillez avec une structure de répertoires hiérarchique en Python, il devient nécessaire d'importer des modules à partir d'autres sous-répertoires. Les importations relatives traditionnelles utilisant « .. » peuvent conduire à des erreurs dans certains scénarios. En particulier, lors de l'exécution d'un module en tant que module principal en le passant comme argument à l'interpréteur, les importations relatives échouent.
Selon PEP 328, les importations relatives reposent sur l'attribut name d'un module pour déterminer sa position dans la hiérarchie des packages. Cependant, lorsque le nom est défini sur '__main__', comme c'est le cas lors de l'exécution d'un module en tant que module principal, les importations relatives sont résolues comme si le module était un module de niveau supérieur, quel que soit son fichier. emplacement du système.
Pour résoudre ce problème, Python 2.6 a introduit la possibilité de référencer des modules par rapport au module principal. Ceci est décrit dans la PEP 366. En tirant parti de cette fonctionnalité, il est possible d'effectuer des importations relatives sans rencontrer l'erreur « Tentative d'importation relative dans un non-package ».
Exemple :
Dans une structure de répertoires comme :
app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py
Pour importer le mod2 depuis le mod1, vous pouvez utiliser ce qui suit syntaxe :
from importlib.machinery import SourceFileLoader mod2 = SourceFileLoader('mod2', 'sub2/mod2.py').load_module()
Alternativement, si vous n'exécutez pas le module en tant que module principal, la syntaxe d'importation relative habituelle fonctionnera :
from ..sub2 import mod2
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!