【问题标题】:Python email module ImportError: No module named utilsPython 电子邮件模块 ImportError:没有名为 utils 的模块
【发布时间】:2020-01-19 17:16:20
【问题描述】:

我安装的 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

【问题讨论】:

  • 您在模块搜索路径中是否有自己的 email.py 模块可能会影响标准库中的模块?
  • 是的,我刚刚注意到了!! 头疼

标签: python-2.7 python-requests


【解决方案1】:

很可能在模块搜索路径(包括当前工作目录)中您自己的模块之一实际上称为email。这将导致 Python 取而代之的是选择该模块,并且它将隐藏标准库中的 email 模块,从而导致导入错误。

将该模块重命名为其他名称,这样就可以了。

【讨论】:

  • 是的,我也遇到过,我没有 email.py 文件,但我的电子邮件模块所在的文件夹名为 email,这把事情搞砸了。
  • 另外,如果您将脚本命名为 email.py 并尝试运行它并遇到这些错误,请确保在重命名后删除所有 email.pyc 文件和/或 __pycache__ 目录
猜你喜欢
  • 2023-03-06
  • 2019-05-18
  • 2018-01-26
  • 2013-12-02
  • 2018-05-13
  • 1970-01-01
  • 2019-03-13
  • 2013-01-06
  • 2017-12-30
相关资源
最近更新 更多