Python email module ImportError: No module named utils

匿名 (未验证) 提交于 2019-12-03 08:42:37

问题:

My installation of Python's requests library has been working perfectly for months and it has decided to break today.

Python 2.7.6 (default, Jun 22 2015, 17:58:13)  [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import requests Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 58, in <module>     from . import utils   File "/usr/local/lib/python2.7/dist-packages/requests/utils.py", line 26, in <module>     from .compat import parse_http_list as _parse_list_header   File "/usr/local/lib/python2.7/dist-packages/requests/compat.py", line 7, in <module>     from .packages import chardet   File "/usr/local/lib/python2.7/dist-packages/requests/packages/__init__.py", line 3, in <module>     from . import urllib3   File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/__init__.py", line 10, in <module>     from .connectionpool import (   File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 37, in <module>     from .request import RequestMethods   File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/request.py", line 6, in <module>     from .filepost import encode_multipart_formdata   File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/filepost.py", line 8, in <module>     from .fields import RequestField   File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/fields.py", line 1, in <module>     import email.utils ImportError: No module named utils 

The trouble calling utils is related to the email module in Python 2.7

>>> import email >>> import email.utils Traceback (most recent call last):   File "<stdin>", line 1, in <module> ImportError: No module named utils 

utils is clearly a part of Python's email library, but it can't be accessed. If I uninstall and reinstall:

Worst of all utils.py is actually present. What am I doing wrong?

$ ls /usr/local/lib/python2.7/dist-packages/email/ base64mime.py   errors.py       header.py      message.py      parser.pyc base64mime.pyc  errors.pyc      header.pyc     message.pyc     quoprimime.py charset.py      feedparser.py   __init__.py    mime            quoprimime.pyc charset.pyc     feedparser.pyc  __init__.pyc   _parseaddr.py   test encoders.py     generator.py    iterators.py   _parseaddr.pyc  utils.py encoders.pyc    generator.pyc   iterators.pyc  parser.py       utils.pyc 

回答1:

Most likely one of your own modules in the module search path (including the current working directory) is actually called email. This will cause Python to pick up that module instead, and it will shadow the email module from the standard library, leading to that import error.

Rename that module to something else, and you should be good.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!