ImportError:无法导入名称chardet

时间:2015-07-13 15:46:27

标签: python py2exe

您好我已经写了一个python scrapper,我在其中导入请求和美丽的汤模块。我正在使用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=['CompanyScrapper-1.6.py']
    )

我通过运行命令“python setup.py py2exe”创建了.exe文件。 但是在窗口上运行.exe文件时会抛出以下错误:

Traceback (most recent call last):
  File "CompanyScrapper-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中

感谢您查看我的问题。

1 个答案:

答案 0 :(得分:2)

从追溯中可以看出 -

Traceback (most recent call last):
  File "CompanyScrapper-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

您的requests目录中包含__init__.py。这掩盖了库中的requests包,因此当您尝试从chardet库中导入requests或任何此类内容时,它会尝试在此本地包中搜索它,而不是图书馆一。

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