转自http://www.jglin.com/archives/76.html
在使用cmd安装web-0.37的时候,报了个安装错误,这里记录下。
系统:win7(64)
环境:python2.7.6
信息:
D:/tool/webpy-webpy-0.37>python setup.py install
Traceback (most recent call last):
File "setup.py", line 6, in
from web import __version__
File "D:/tool/webpy-webpy-0.37/web/__init__.py", line 14, in
import utils, db, net, wsgi, http, webapi, httpserver, debugerror
File "D:/tool/webpy-webpy-0.37/web/wsgi.py", line 12, in
import httpserver
File "D:/tool/webpy-webpy-0.37/web/httpserver.py", line 4, in
from SimpleHTTPServer import SimpleHTTPRequestHandler
File "D:/tool/Python27/lib/SimpleHTTPServer.py", line 27, in
class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
File "D:/tool/Python27/libS/impleHTTPServer.py", line 208, in SimpleHTTPReques
tHandler
mimetypes.init() # try to read system mime.types
File "D:/tool/Python27/lib/mimetypes.py", line 358, in init
db.read_windows_registry()
File "D:/tool/Python27/lib/mimetypes.py", line 258, in read_windows_registry
for subkeyname in enum_types(hkcr):
File "D:/tool/Python27/li/bmimetypes.py", line 249, in enum_types
ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 10: ordinal
not in range(128)
错误原因:
主要错误是上面最后一行的Unicode解码问题,原因就是python的str默认是ascii编码,和unicode编码冲突,
解决方法:
在 报错的 mimetypes.py 文件最早报错的地方之前加上
if sys.getdefaultencoding()!='gbk':
reload(sys)
sys.setdefaultencoding('gbk')