Jupyter Notebook をコマンドラインで作成して Jupyter kernel をテストする方法

Jupyter Notebook のカーネルを自動でテストする方法はいくつかあるようだけど、ユーザが使うことを想定しているような実装には見えない。今回は、nbformat を使って Python プログラムから notebook(.ipynb ファイル)を作って実行し結果を確認する方法について記録しておく。

Notebook の作成

import nbformat

nb = nbformat.v4.new_notebook()
title = "Python3 Test Notebook"
code = """
import sys
print(sys.version)
"""
nb["cells"] = [
    nbformat.v4.new_markdown_cell(title),
    nbformat.v4.new_code_cell(code)
]

with open("/notebook/Python3Test.ipynb", "w") as f:
    nbformat.write(nb, f)

こんな感じにすると、1つ目のセルに Python のバージョンをチェックするコードが入った notebook が Python3Test.ipynb の名前で保存される。

Notebook の実行

$ jupyter nbconvert --ExecutePreprocessor.kernel_name=<kernel> --to notebook --execute --inplace /notebook/Python3Test.ipynb

このようにすると、notebook を実行して結果を同ファイルに上書きしてくれる。

Notebook の中身の確認

import sys
import nbformat

with open(sys.argv[1]) as f:
    nb = nbformat.read(f, as_version=4)

for cell in nb['cells']:
    if 'outputs' in cell:
        for output in cell['outputs']:
            print(output['text'])

スクリプト実行するときに第一引数に notebook のファイル名を指定する。notebook 内の結果部分だけがすべて標準出力に出る。

コメントを残す

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