首页 > 代码库 > Python 2.7安装setuptools时的UnicodeDecodeError解决办法

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

我猜~~~很多一开始学习python的同学们一定也遇到了这个问题,在安装setuptools时候会遇到UnicodeDecodeError的错误。

我学的是3.x,但是周围的人都说2.7好,╮(╯▽╰)╭一开始我也不在乎,但是工作需要使用mongodb,但是它的包暂时只有2.7,我点点点点。

无奈我也就换了版本,改为2.7,但是问题来了,当我想安装setuptools的时候,恶心的错误来了。真的不知道安装这种成熟的工具还有这种问题。

在经过各种谷哥、度娘之后,有的说在代码中制定编码,试了不行,有的说是2.7自身的bug,根据其修改,发现好了。

先分享出来,我的修改方法。

 


1.下载获得setuptools 的py文件,执行后出现报错内容如下:

UnicodeDecodeError: ascii codec cant decode byte 0xd7 in position 9: ordinal not in range(128)

2.在python的安装目录下,一般是c:\python2.7\Lib\mimetypes.py

这是在search到的一个解决方案的地址:http://bugs.python.org/review/9291/diff/1663/Lib/mimetypes.py

根据该内容来修改mimetypes.py文件,并保存

现在把不同的地方贴出来:

修改一

原文件:

1  import sys
2  import posixpath
3  import urllib
4  try:
5      import _winreg
6  except ImportError

需要改为:

1  import sys
2  import posixpath
3  import urllib
4  from itertools import count
5  try:
6      import _winreg
7  except ImportError

修改二

原文件:

def enum_types(mimedb):
            i = 0
            while True:
                try:
                    ctype = _winreg.EnumKey(mimedb, i)
                except EnvironmentError:
                    break
                try:
                    ctype = ctype.encode(default_encoding) # omit in 3.x!
                except UnicodeEncodeError:
                    pass
                else:
                    yield ctype
                i += 1

需要修改为:

def enum_types(minmedb):
    for i in count():
        try:
            pield_winreg.EnumKey(minedb,i)
        except EnvironmentError:
            break

 

3.删除mimetypes.pyc,这个应该是备份的源文件,发现没有删除这个文件的还是不行

4.在cmd重新再执行安装的命令,试试

应该可以了

 

参考的博客,在此,也是在问题解决之后看到的这个,早看到就好了,有改好的文件可以下载哦!

1.http://www.aax9.com/2014/01/21/95.html

还有一个,maybe也可以

2.http://blog.csdn.net/hugleecool/article/details/17996993