【Jupyter】nbformatのアップデートでエラーになった話

Contents

今まで開けていたNotebookが開けない

nbformatは、実体としてはシンプルなJSONファイルであるNotebookファイル(.ipynb拡張子ファイル)を、よく見るあの感じで描画するために欠かせないツールです。

今回、自前で用意したDockerfile(以下)でJupyterlabコンテナを起動していたところ、ある時からNotebookファイルが開けなくなりました。

FROM jupyter/scipy-notebook:ubuntu-20.04...RUN pip install --no-cache --upgrade pip \ && pip install --no-cache nbformat==5.1.3 \ ....
Notebookが開けない・・?

カンの良い方は気づいたかもしれないのですが、ベースイメージjupyter/scipy-notebookはデフォルトでnbformatがインストールされるので、あらためてRUN pip install …する必要はないのですが、まあ許してください。ともあれ、このエラーに関して調べてみると、面白いことがわかったのです。

v5.2.0におけるアップデートが原因

結論から言うと、これはnbformat v5.1.3⇒v5.2.0へのアップデートが原因(のひとつ)でした。Notebookファイルを読み取るnbformat.read関数などに、引数capture_validation_errorが追加されていたのです。エラーメッセージとも符合しますね。

# v5.1.3nbformat.read(fp, as_version, **kwargs)# v5.2.0nbformat.read(fp, as_version, capture_validation_error=None, **kwargs)

そして、このnbformatのアップデートが、jupyter/scipy-notebookのアップデートで取り込まれ、しかしそうとは知らずRUN pip install …でv5.1.3をまたまたインストールしていたので、pip listでバージョンを調べるとv5.1.3だけど、内部的にはv5.2.0も入っていて…というところでエラーが引き起こされたようでした。

$ pip list | grep nbformatnbformat 5.1.3

対応としては、この事象を調べていくうちにnbformatをあらためてpip installする必要はないとわかったので、その行を削除することにしました。こうすることで、nbformat v.5.2.0でNotebookが開けるようになりました。

$ pip list | grep nbformatnbformat 5.2.0

参考

最新情報をチェックしよう!