Maison >développement back-end >Tutoriel Python >Comment gérer les importations relatives dans les packages Python lors de l'exécution de modules en tant que scripts ?
Lorsque vous tentez d'importer une fonction à partir d'un autre fichier dans le même répertoire, en utilisant soit from .mymodule import myfunction ou from mymodule import myfunction peut entraîner des erreurs. La raison réside dans le fait que le module contenant la fonction importée se trouve ou non dans un package.
Les importations relatives fonctionnent lorsque le module est à l'intérieur d'un package. Pour créer un package, un fichier __init__.py doit être présent dans le répertoire contenant les modules. Cependant, il est également important de s'assurer que le module peut parfois être exécuté en tant que script.
Une présentation courante pour un package contenant plusieurs modules et un script principal est la suivante suit :
mypackage/
Dans mymodule.py :
# Exported function def as_int(a): return int(a) # Test function for module def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()
Dans myothermodule.py :
# Import exported function from the mymodule from .mymodule import as_int # Exported function def add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()
Dans main.py :
# Import exported function from myothermodule from mypackage.myothermodule import add def main(): print(add('1', '1')) if __name__ == '__main__': main()
Lors de l'exécution de main.py ou mypackage/mymodule.py, le code s'exécute sans problème. Cependant, tenter d'exécuter mypackage/myothermodule.py entraîne une erreur liée à l'importation relative utilisée (à partir de .mymodule import as_int).
Il existe deux approches alternatives pour résoudre ce problème. :
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!