Maison > développement back-end > Tutoriel Python > Comment corriger les erreurs « Tentative d'importation relative dans un non-package » en Python ?

Comment corriger les erreurs « Tentative d'importation relative dans un non-package » en Python ?

Linda Hamilton
Libérer: 2024-12-18 14:08:11
original
804 Les gens l'ont consulté

How to Fix

Résolution de l'erreur « Tentative d'importation relative dans un non-package » avec __init__.py

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal