67 votes

Importation Python avec conflits de noms

J'ai maintenant tombé sur ce problème deux fois récemment et je suis curieux de savoir si il existe une solution.

Donc, j'ai un module qui confilcts avec un python intégré. Par exemple, dire que j'ai un myapp.e-mail module défini dans myapp/email.py.

Maintenant, n'importe où dans mon code je peut faire référence à myapp.e-mail à l'amende juste. Cependant, j'ai besoin de faire référence à l'Python e-mail dans ma bibliothèque myapp/email.py fichier.

Cependant, si je fais:

from email import message_from_string

Bien sûr, ne trouve en lui-même, et ne pose donc un ImportError sur la méthode. De même, "importer du courrier" fait la même chose quand j'essaie d'appeler e-mail.message_from_string() à l'intérieur du module.

Est-il d'un support natif pour ce faire en Python, ou suis-je coincé avec le renommage de mon "e-mail" module à quelque chose de plus spécifique?

merci,

94voto

Greg Hewgill Points 356191

Vous voudrez en savoir plus sur les importations absolues et relatives, qui aborde ce problème. Utilisation:

 from __future__ import absolute_import
 

En utilisant cela, tout nom de paquetage sans fioritures fera toujours référence au paquetage de niveau supérieur. Vous devrez ensuite utiliser les importations relatives ( from .email import ... ) pour accéder à votre propre package.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X