L'importation de modules avec des chemins relatifs peut entraîner des problèmes lorsque vous travaillez avec la structure du package Python. L'un de ces problèmes est l'erreur « Tentative d'importation relative dans un non-package » rencontrée lors de la tentative d'importation de modules dans les répertoires de packages, malgré la présence de fichiers __init__.py.
Pour comprendre la cause première, il est crucial de comprendre comment fonctionne le mécanisme d'importation de Python. Les importations sont généralement exécutées par rapport au nom du fichier courant. Cependant, lors de l'exécution directe d'un fichier, il prend le nom "__main__" au lieu de son nom habituel. Cette particularité perturbe les importations relatives, entraînant l'erreur susmentionnée.
Au lieu d'exécuter le code directement, pensez à utiliser l'option -m, qui permet de traiter un module comme un script et de lui attribuer le nom approprié. Par exemple, pour exécuter core_test.py à l'aide de cette méthode, entrez la commande suivante :
python -m pkg.tests.core_test
Vous pouvez également spécifier le nom du package dans le module lui-même en utilisant l'attribut package. Cette technique garantit que les importations relatives fonctionnent correctement même lorsque le fichier est exécuté directement en tant que script. Reportez-vous à la proposition d'amélioration Python 366 (PEP-366) pour plus de détails sur cette approche.
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!