首页 > 解决方案 > Jupyter 无法打开笔记本并出现错误:“文件“XX”有未保存的更改,关闭而不保存?”

问题描述

我在使用分布式文件系统的机器集群上运行 Jupyter 笔记本。

一段时间后,由于错误,我无法打开新笔记本:

Close without saving?
File "XXX.ipynb" has unsaved changes, close without saving?

查看 Jupyter 日志,我可以看到出现此错误是因为nbsignatures.db数据库已锁定。

[E 15:58:01.190 LabApp] Uncaught exception GET /api/contents/workspace/proteinsolver/notebooks/XXX.ipynb?type=notebook&content=1&1572638276143 (10.74.73.2)
    HTTPServerRequest(protocol='http', host='localhost:9416', method='GET', uri='/api/contents/workspace/proteinsolver/notebooks/04_sudoku_train-01-Copy8.ipynb?type=notebook&content=1&1572638276143', version='HTTP/1.1', remote_ip='10.74.73.2')
    Traceback (most recent call last):
      File "/home/username/miniconda3/lib/python3.7/site-packages/tornado/web.py", line 1699, in _execute
        result = await result
      File "/home/username/miniconda3/lib/python3.7/site-packages/tornado/gen.py", line 209, in wrapper
        yielded = next(result)
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/handlers.py", line 112, in get
        path=path, type=type, format=format, content=content,
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/filemanager.py", line 433, in get
        model = self._notebook_model(path, content=content)
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/filemanager.py", line 392, in _notebook_model
        self.mark_trusted_cells(nb, path)
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/manager.py", line 508, in mark_trusted_cells
        trusted = self.notary.check_signature(nb)
      File "/home/username/miniconda3/lib/python3.7/site-packages/nbformat/sign.py", line 439, in check_signature
        return self.store.check_signature(signature, self.algorithm)
      File "/home/username/miniconda3/lib/python3.7/site-packages/nbformat/sign.py", line 232, in check_signature
        """, (algorithm, digest)).fetchone()
    sqlite3.OperationalError: database is locked

我解决这个问题的最简单方法是什么?

标签: pythonjupyter-notebook

解决方案


笔记本是否有机会在 git 中维护并且存在合并冲突?请参阅此解决方案:https ://stackoverflow.com/a/61031136/4001214当我遇到此问题时它修复了我的问题。

当 git 无法解决文本文件中的冲突时,它会将其合理差异的想法放入文件中。这破坏了 .ipynb 的 JSON 结构,使其在 jupyter 中不可读。在链接的解决方案中,作者显示

<<<<<<< HEAD
  },
  {
   <CONTENTS OF MY CELL>
   ]
=======
>>>>>>> a23f8f8f9db0974b7de90c6e7ed8599fa04d53cc

并注意到使用文本编辑器从文件中删除有问题的行解决了这个问题。就我而言,我在 git 中有一个已知的好文件,所以我删除了本地副本并重新拉取。


推荐阅读