setuptools " UnicodeDecodeError:"问题探究

Q:在安装setuptools时Python ez_setup.py,或者安装其他egg包,有时候会碰到: UnicodeDecodeError错误,这是为什么呢?

安装setuptools时UnicodeDecodeError错误

<span style="font-family:SimSun;"> mimetypes.init() # try to read system mime.types
  File "C:\Python27\lib\mimetypes.py", line 358, in init
    db.read_windows_registry()
  File "C:\Python27\lib\mimetypes.py", line 258, in read_windows_registry
    for subkeyname in enum_types(hkcr):
  File "C:\Python27\lib\mimetypes.py", line 249, in enum_types
    ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 8: ordinal
not in range(128)
Something went wrong during the installation.
See the error message above.</span>

安装xlrd时UnicodeDecodeError错误

<span style="font-family:SimSun;">

    mimetypes.init() # try to read system mime.types

  File "C:\Python27\lib\mimetypes.py", line 358, in init

    db.read_windows_registry()

  File "C:\Python27\lib\mimetypes.py", line 258, in read_windows_registry

    for subkeyname in enum_types(hkcr):

  File "C:\Python27\lib\mimetypes.py", line 249, in enum_types

    ctype = ctype.encode(default_encoding) # omit in 3.x!

UnicodeDecodeError: 'ascii' codec can't decode byte 0x88 in position 1: ordinal not in range(128)</span>

UnicodeDecodeError错误原因分析

从Traceback来看是函数mimetypes.init(),在进行ascil解码时,抛出了异常了,查看mimetypes.py源代码,下面是错误发生的地方。

<span style="font-family:SimSun;">default_encoding = sys.getdefaultencoding()
        with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, '') as hkcr:
            for subkeyname in enum_types(hkcr):
                try:
                    with _winreg.OpenKey(hkcr, subkeyname) as subkey:
                        # Only check file extensions
                        if not subkeyname.startswith("."):
                            continue
                        # raises EnvironmentError if no 'Content Type' value
                        mimetype, datatype = _winreg.QueryValueEx(
                            subkey, 'Content Type')
                        if datatype != _winreg.REG_SZ:
                            continue
                        try:
                            mimetype = mimetype.encode(default_encoding)
                            subkeyname = subkeyname.encode(default_encoding)
                        except UnicodeEncodeError:
                            continue
                        self.add_type(mimetype, subkeyname, strict)</span>

我想现在大家已经明白了UnicodeDecodeError错误原因,就是注册表HKEY_CLASSES_ROOT下的子key存在不能用当前系统默认的asci编码解码时抛出UnicodeEncodeError错误。

建议解决策:

  • 清理注册表HKEY_CLASSES_ROOT中,含有当前ASCI以外字符的key
  • 抛弃Python2.7.6,改用Python2.7.7

P.S这是python2.7.6的一个bug,Python2.7.7已经修改了。

http://bugs.python.org/issue9291

setuptools " UnicodeDecodeError:"问题探究

时间: 2024-11-05 09:19:25

setuptools " UnicodeDecodeError:"问题探究的相关文章

py2.7 安装setuptools UnicodeDecodeError报错

原帖:http://blog.csdn.net/hugleecool/article/details/17996993 解决方法:打开C:\Python27\Lib下的 mimetypes.py 文件,找到大概256行的 'default_encoding = sys.getdefaultencoding()'. 在这行前面添加三行: if sys.getdefaultencoding() != 'gbk':       reload(sys)       sys.setdefaultencod

Python 2.7安装setuptools时的UnicodeDecodeError解决办法

我猜~~~很多一开始学习python的同学们一定也遇到了这个问题,在安装setuptools时候会遇到UnicodeDecodeError的错误. 我学的是3.x,但是周围的人都说2.7好,╮(╯▽╰)╭一开始我也不在乎,但是工作需要使用mongodb,但是它的包暂时只有2.7,我点点点点. 无奈我也就换了版本,改为2.7,但是问题来了,当我想安装setuptools的时候,恶心的错误来了.真的不知道安装这种成熟的工具还有这种问题. 在经过各种谷哥.度娘之后,有的说在代码中制定编码,试了不行,有

python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:&#39;ascii&#39; codec can&#39;t decode byte

今天折腾了一天,安装pyspider,由于依赖包众多,而且搜索到所有信息多是在linux平台和mac平台下的安装教程.可怜我试了n多版本,一直不成功. 最后发现有人说python的版本,不能低于2.7.6,否则pycurl无法安装成功,一查我的是2.7.2. 好吧,卸载,重新安装python2.7.6. 似乎安装后,能够顺利安装pycurl了,但是easy_install 报错信息与编码相关: 在网上搜索找到解决方案:http://www.360doc.com/content/14/0508/0

一、Python、pip、setuptools 安装

1.Python的安装 (1)Python,一路next,然后配置环境变量,D:\Python27\;D:\Python27\Scripts; (2)检验安装正确:cmd, 输入python,可查看版本号;退出交互模式 ctrl+z, 2.pip的安装 (1)将下载文件解压缩到d盘 (2)cmd下进入到解压后的setuptools-0.6c11目录 (3)执行python setup.py build (4)步骤三执行后,执行python setup.py install (5)在pip的解压缩

Win7 Python2.7.6 安装pip,setuptools

1.先安装python2.7.6解析器 2.下载 ez_setup.py:代码资源 从cmd进入当前路径(可以找到的ez_setup.py地方,笔者将其放到的安装python的路径下),执行: python ez_setup.py 但是在安装setuptools遇到如下问题: mimetypes.init() # try to read system mime.types File "J:\Program Files (x86)\Python\Python27\lib\mimetypes.py&

python安装第三方模块UnicodeDecodeError:&#39;ascii&#39; codec can&#39;t decode byte &#183;&#183;&#183;

python要安装第三方模块时,可以用easy_install '模块名' 来直接安装模块,但我在安装easy_install时遇到如上题错误UnicodeDecodeError:'ascii' codec can't decode byte ··· 首先下载ez_setup.py:https://pypi.python.org/pypi/setuptools#windows  到某个目录下 CMD->cd到下载的那个目录 <span style="font-size:18px;&q

python2.7中的UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0

使用ez_setup.py安装setuptools报错如下 Traceback (most recent call last): File "httpservice.py", line 5, in <module> import SimpleHTTPServer File "C:\Python27\lib\SimpleHTTPServer.py", line 27, in <module> class SimpleHTTPRequestHan

Win10上Python3通过pip install Twisted安装时出现UnicodeDecodeError

pip install Twisted 报错: C:\Windows\system32>pip install Twisted Collecting Twisted Using cached Twisted-17.9.0.tar.bz2 Requirement already satisfied: zope.interface>=4.0.2 in c:\users\xxx\appdata\local\programs\python\python36\lib\site-packages (fro

UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe0 in position 0

Windows 7/8/10机器上安装Python 2.7后,下载一些Package包进行setup时总是报错UnicodeDecodeError,如下: File "C:/Python27/lib/mimetypes.py", line 250, in enum_types ctype = ctype.encode(default_encoding) # omit in 3.x! UnicodeDecodeError: 'ascii' codec can't decode byte