首页 > 代码库 > 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 can‘t 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