ImportError: cannot import name chardet

ImportError: cannot import name chardet

你好,我写了一个 python scraper,我在其中导入请求和 Beautiful soup 模块。我正在使用 python2.7 。 我正在使用 py2exe 模块从我的 Python 脚本中创建 Windows 可执行文件 (.exe)。 为此,我创建了 setup.py 如下:

from distutils.core import setup
import py2exe
import requests

packages = [
    'requests',
    'requests.packages',
    'requests.packages.chardet',
    'requests.packages.urllib3',
    'requests.packages.urllib3.packages',
    'requests.packages.urllib3.contrib',
    'requests.packages.urllib3.util',
    'requests.packages.urllib3.packages.ssl_match_hostname',
]

setup(
    console=['CompanyScraper-1.6.py']
    )

我已经通过 运行 命令“python setup.py py2exe”创建了 .exe 文件。 但是 运行 window 上的 .exe 文件抛出以下错误:

Traceback (most recent call last):
  File "CompanyScraper-1.6.py", line 13, in <module>
  File "requests\__init__.pyc", line 58, in <module>
  File "requests\utils.pyc", line 26, in <module>
  File "requests\compat.pyc", line 7, in <module>
ImportError: cannot import name chardet

我无法理解为什么这个 chardet 导入错误,尽管我已经将包包含到 setup.py

感谢您调查我的问题。

从回溯中可以看出-

Traceback (most recent call last):
  File "CompanyScraper-1.6.py", line 13, in <module>
  File "requests\__init__.pyc", line 58, in <module>
  File "requests\utils.pyc", line 26, in <module>
  File "requests\compat.pyc", line 7, in <module>
ImportError: cannot import name chardet

您有一个带有 __init__.pyrequests 目录。这是从库中屏蔽了 requests 包,因此当您尝试从 requests 库中导入 chardet 或任何类似的东西时,它会尝试在这个本地包中搜索它,而不是图书馆一号。

最好的解决方案是将目录和本地包从 requests 重命名为其他名称,这样名称就不会与任何库包冲突。