web-dev-qa-db-fra.com

Impossible d'importer du tout le module de messagerie de Python

Je n'arrive pas du tout à importer le module de messagerie. Chaque fois que je le fais, j'obtiens une erreur. J'ai essayé de désinstaller Python et de réinstaller, mais le module de messagerie refuse simplement de fonctionner. J'ai même fait "pip install email" et il est toujours cassé. Je suis sur Windows 7 Home Premium x64, exécutant une version x86 de Python.

Voici ce qui se passe:

c:\Users\Nicholas\Desktop>python
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import email
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "email.py", line 1, in <module>
    import smtplib
  File "C:\Python27\lib\smtplib.py", line 46, in <module>
    import email.utils
ImportError: No module named utils
>>>

EDIT: J'ai essayé les deux Python de python.org et ActivePython, pensant qu'ActivePython pourrait fonctionner. Est-il possible de supprimer complètement python et toutes ses données et commencer 100% frais peut-être?

42
Nicholas

Il semble que vous ayez un fichier nommé email.py. N'utilisez pas de noms de fichiers portant le même nom que les modules de bibliothèque standard Python. En général, votre répertoire de travail apparaît plus tôt dans le chemin de recherche Python pour l'importation de modules) les fichiers de votre répertoire de travail remplaceront donc les modules portant le même nom dans la bibliothèque standard.

L'indice: notez les noms de chemin dans le traceback

  File "email.py", line 1, in <module>
    import smtplib
  File "C:\Python27\lib\smtplib.py", line 46, in <module>
    import email.utils

Soit dit en passant, il s'agit d'une erreur très courante. L'excellent tutoriel de l'ensemble de documentation standard Python en parle ici .

106
Ned Deily

Je viens de rencontrer cette erreur et je voulais partager ma solution. Dans mon cas, j'avais un fichier nommé email.py dans le répertoire. Cela a créé un conflit de nom entre email.py et mon dossier. Lorsque smtplib a tenté de import email.utils il a regardé et mon dossier et n'a rien trouvé. Après avoir renommé ma copie de email.py en myemail.py tout fonctionnait comme un charme.

34
Vladimir Bychkovsky

J'ai également rencontré cette erreur. En plus de renommer email.py en quelque chose d'autre, vous devez également supprimer le fichier email.pyc (notez le fichier C). Après ça, tout va bien. Merci a tous!

5
Jose Leon

J'ai également récupéré ce problème car j'avais un fichier nommé email.py dans mon répertoire de projet. Je n'ai pas pu importer urllib.request. Lorsque j'ai changé le nom de fichier email.py en emailtest.py, l'erreur a disparu. À chaque fois, nous ne devons pas utiliser le nom qui est identique à python nom du fichier principal.

3
Raihan