J'ai un module qui entre en conflit avec un module intégré. Par exemple, un myapp.email
module défini dans myapp/email.py
.
Je peux référencer myapp.email
n'importe où dans mon code sans problème. Cependant, je dois référencer le module de messagerie intégré à partir de mon module de messagerie.
# myapp/email.py
from email import message_from_string
Il se trouve seulement, et lève donc un ImportError
, puisque myapp.email
n'a pas de message_from_string
méthode. import email
provoque le même problème lorsque j'essaie email.message_from_string
.
Existe-t-il un support natif pour le faire en Python, ou suis-je obligé de renommer mon module "e-mail" en quelque chose de plus spécifique?
Vous voudrez en savoir plus sur Importations absolues et relatives qui résout ce problème. Utilisation:
from __future__ import absolute_import
En utilisant cela, tout nom de package sans fioritures fera toujours référence au package de niveau supérieur. Vous devrez ensuite utiliser les importations relatives (from .email import ...
) pour accéder à votre propre package.
REMARQUE: Ce qui précède from ...
la ligne doit être placée dans un 2.x Python .py
fichiers au-dessus de import ...
lignes que vous utilisez. Dans Python 3.x, c'est le comportement par défaut et n'est donc plus nécessaire.