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

Categories:Jupyter Notebook

今まで開けていた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.3
nbformat.read(fp, as_version, **kwargs)

# v5.2.0
nbformat.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 nbformat
nbformat             5.1.3

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

$ pip list | grep nbformat
nbformat             5.2.0

参考

返信がありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です