Anaconda ipython-notebook出现“UnicodeDecodeError: 'ascii' codec无法解码字节0xb0,位置1”

3 投票
4 回答
6553 浏览
提问于 2025-04-17 22:25

我安装了 Anaconda-1.9.1-Windows-x86.exe,然后想在安装后启动 ipython-notebook。但是我遇到了一个错误:

2014-03-15 17:00:48.724 [tornado.application] ERROR | Uncaught exception GET /st
atic/components/jquery-ui/themes/smoothness/jquery-ui.min.css (127.0.0.1)
HTTPRequest(protocol='http', host='127.0.0.1:8888', method='GET', uri='/static/c
omponents/jquery-ui/themes/smoothness/jquery-ui.min.css', version='HTTP/1.1', re
mote_ip='127.0.0.1', headers={'Accept-Language': 'zh-CN,zh;q=0.8', 'Accept-Encod
ing': 'gzip,deflate,sdch', 'Host': '127.0.0.1:8888', 'Accept': 'text/css,*/*;q=0
.1', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTM
L, like Gecko) Chrome/24.0.1312.57 Safari/537.17 SE 2.X MetaSr 1.0', 'Accept-Cha
rset': 'GBK,utf-8;q=0.7,*;q=0.3', 'Connection': 'keep-alive', 'Referer': 'http:/
/127.0.0.1:8888/'})
Traceback (most recent call last):
  File "D:\Anaconda\lib\site-packages\tornado\web.py", line 1218, in _when_compl
ete
    callback()
  File "D:\Anaconda\lib\site-packages\tornado\web.py", line 1239, in _execute_me
thod
    self._when_complete(method(*self.path_args, **self.path_kwargs),
......
......
  File "D:\Anaconda\lib\mimetypes.py", line 258, in read_windows_registry
    for subkeyname in enum_types(hkcr):
  File "D:\Anaconda\lib\mimetypes.py", line 249, in enum_types
    ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal
not in range(128)
2014-03-15 17:00:50.220 [tornado.access] ERROR | 500 GET /static/tree/js/noteboo
klist.js (127.0.0.1) 98.00ms

完整的错误信息在这里,我不太确定发生了什么。

我使用的是 Windows 7 64位,之前安装的 anaconda 1.5.0 一切都运行得很好。我猜 anaconda 1.9.1 可能在处理 Unicode 时有一些问题。希望有经验的人能帮忙;)。现在我可能得降级了;\

4 个回答

0

我通过修改一些文件解决了这个问题:

  • \Anaconda2\Lib\ntpath.py:

把这行代码:

result_path = result_path + p_path 改成:

try:
    result_path = result_path + p_path
except UnicodeDecodeError:
    pass
  • \Anaconda2\Lib\site-packages\jupyter_core\paths.py

把这行代码:

homedir = os.path.realpath(homedir) 改成:

homedir = os.path.realpath(homedir).decode(sys.getfilesystemencoding())

还有这行:

appdata = os.environ.get('APPDATA', None) 改成:

appdata = os.environ.get('APPDATA', None).decode(sys.getfilesystemencoding())

  • \Anaconda2\Lib\site-packages\notebook\notebookapp.py

把这行:

home = os.path.expanduser('~') 改成:

home = os.path.expanduser('~').decode(sys.getfilesystemencoding())

0

在我的情况下,文件夹路径里有中文部分,这也导致了同样的问题。

0

Knelson可能是指在第250行添加以下代码(这对我解决了问题):

                except UnicodeDecodeError:
                    pass

而不是UnicodeEncodeError

4

这是mimetypes.py里的一个bug。有些程序在系统注册表里插入了一个Unicode条目,而mimetypes试图把它解码成ascii格式。

这里有一个补丁,具体内容可以在这个回答里找到:UnicodeDecodeError : 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)

这是补丁的实际链接:http://bugs.python.org/file18143/9291.patch

假设你的anaconda安装在默认位置:C:\Anaconda,你可以通过打开一个文本编辑器,快速修复这个问题。只需在C:\Anaconda\Lib\mimetypes.py文件的第250行添加以下代码:

                except UnicodeEncodeError:
                    pass

撰写回答