web-dev-qa-db-ja.com

Python電子メールモジュールImportError:utilsという名前のモジュールはありません

私のPythonの requests ライブラリのインストールは数か月間完全に機能しており、今日は中断することにしました。

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

utils の呼び出しの問題は、Python 2.7の email モジュールに関連しています

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

utilsは明らかにPythonのemailライブラリの一部ですが、アクセスすることはできません。アンインストールして再インストールした場合:

$ Sudo pip install email

Collecting email
  Downloading email-4.0.2.tar.gz (1.2MB)
    100% |████████████████████████████████| 1.2MB 286kB/s 
Installing collected packages: email
  Running setup.py install for email
Successfully installed email-4.0.2

すべての最悪utils.pyは実際に存在します。何が悪いのですか?

$ 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
11
john mangual

ほとんどの場合、モジュール検索パス(現在の作業ディレクトリを含む)にある独自のモジュールの1つは、実際にはemailと呼ばれます。これにより、Pythonが代わりにそのモジュールを取得し、標準ライブラリからemailモジュールをシャドウして、インポートエラーが発生します。

そのモジュールの名前を別の名前に変更すれば、問題ないはずです。

20
Lukas Graf