您的位置:首页 > 编程语言 > Python开发

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

2014-05-02 10:39 507 查看
我猜~~~很多一开始学习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文件,并保存

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

修改一

原文件:

import sys
import posixpath
import urllib
try:
import _winreg
except ImportError


需要改为:

import sys
import posixpath
import urllib
from itertools import count
  try:
import _winreg
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:
yield_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: