首页 > 解决方案 > UnicodeEncodeError:'ascii' 编解码器在保存和访问 Jupyter 笔记本时无法编码字符 u'\xd7'

问题描述

我在 docker 容器和某些笔记本中运行带有 IPython 笔记本的 Django(Python 2.7)应用程序,在访问时,当我检查显示的日志时,我收到错误:加载此笔记本时发生未知错误

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1415, in _execute
    result = yield result
  File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 870, in run
    value = future.result()
  File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 215, in result
    raise_exc_info(self._exc_info)
  File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 230, in wrapper
    yielded = next(result)
  File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/handlers.py", line 112, in get
    path=path, type=type, format=format, content=content,
  File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/filemanager.py", line 433, in get
    model = self._notebook_model(path, content=content)
  File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/filemanager.py", line 392, in _notebook_model
    self.mark_trusted_cells(nb, path)
  File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/manager.py", line 503, in mark_trusted_cells
    trusted = self.notary.check_signature(nb)
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 438, in check_signature
    signature = self.compute_signature(nb)
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 417, in compute_signature
    for b in yield_everything(nb):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 272, in yield_everything
    for b in yield_everything(value):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 276, in yield_everything
    for b in yield_everything(element):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 272, in yield_everything
    for b in yield_everything(value):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 276, in yield_everything
    for b in yield_everything(element):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 272, in yield_everything
    for b in yield_everything(value):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 272, in yield_everything
    for b in yield_everything(value):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 276, in yield_everything
    for b in yield_everything(element):
  File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 281, in yield_everything
    yield str(obj).encode('utf8')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xd7' in position 14: ordinal not in range(128)

错误图片:加载此笔记本时发生未知错误

当我保存具有数据框行 X 列的形状的文件时,同样的问题发生在 X(u'\xd7') Unicode 的解析中。

尝试更改系统编码注意发生

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

标签: pythonpython-2.7dockerjupyter-notebook

解决方案


nbformat==5.0.x 需要 python 3.5+

从 5.0 开始,nbformat 现在仅支持 Python 3 (>= 3.5)

https://nbformat.readthedocs.io/en/latest/changelog.html#id2


推荐阅读