Ipython Notebook不会加载

时间:2014-02-18 23:50:32

标签: ipython-notebook

在Windows7下的任何浏览器中,我都无法加载ipython笔记本。我收到以下错误。我尝试过使用资源管理器,Firefox和Chrome。我和Enthought和Anaconda有同样的行为。

Ipython(没有笔记本工作正常)。这是错误跟踪的结束:

ctype = ctype.encode(default_encoding) # omit in 3.x
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 2: ordinal not in range(128)
2014-02-18 15:34:47.401 [tornado.access] ERROR | 500 GET /static/custom/custom.js (127.0.0.1) 145.00ms`

1 个答案:

答案 0 :(得分:1)

原因在this answer中确定。

但不是

try:
    ctype = ctype.encode(default_encoding) # omit in 3.x!
except UnicodeEncodeError:
    pass

您可以尝试,因为它毕竟是DecodeError:

try:
    ctype = ctype.encode(default_encoding) # omit in 3.x!
except UnicodeEncodeError, UnicodeDecodeError:
    pass

很可能发生在多字节编码系统中。在这种情况下,注册表中有一个mime类型包含多字节char。 Python发现它是一个ascii字符串(这是错误的,这就是为什么你看到ascii解码错误)并尝试在它实际执行编码之前转换为Python的内部字符串表示。然后它会因UnicodeDecodeError异常而悲伤。此时还没有UnicodeEncodeEorror。

要使整个内部过程清晰,您可以显式地将ctype转换为unicode以使其继续进入编码阶段,例如

ctype = unicode(ctype, youractualencoding).encode(default_encoding)

然后它(可能)会抛出UnicodeEncodeError,因为在这种情况下default_encoding是ascii,它无法处理多字节字符(这也是它首先失败的原因)。所以我们需要处理UnicodeEncodeError和UnicodeDecodeError。

现在你看到这里发生了什么。 IPython笔记本试图加载像custom.js这样的外部资源。它查看注册表以找出内容类型。然后它被异国情调的哑剧类型所窒息。