jupytextの自動変換の設定で他の人に~/.jupyter/jupyter_notebook_config.py
を編集させるの、辛いですよね。よい設定方法があるので共有します。
まず結論
以下の内容のファイルをプロジェクトのルートに配置する。
default_jupytext_formats: "ipynb,py:percent"
jupytextとは
jupytextは、.ipynb
のファイルを.py
, .R
, .jl
, .md
, .Rmd
などに相互に変換するツールです。設定することでjupyter labと連携して、ファイル保存時にそれを自動変換してくれます。また、コマンドラインでも実行できるため、使いみちが豊富です。
.ipynb -> .py
への変換には他のツールとしてnbconvert
もありますが、保存時に自動的に変換するようにするには工夫がとても必要です。
.ipynb <-> .py変換
複数人で分析を行うと.ipynb
のよくないところが明らかになっていきます。
いくつかありますが
- git管理するには重たい。
-
json
形式になっていてレビュー時に読みにくい。
などがあり、共有することが難しいです。
この解決策の一つとして、python形式などに変換するという方法があります。これによって、notebookが軽量で見やすくなり、良い感じです。
また、.py
-> .ipynb
変換によってnotebookの再現も問題なくできます。
環境
# Pipenv環境
python 3.8.5
jupyterlab 2.2.6
利用手順
1. jupytextのインストール
pipenvを使っていない場合はよしなに置き換えてください。
$ pipenv install jupytext
2. jupyter labのビルド
インストール後jupyter labを起動するとビルドするかどうか聞かれるので、そのままビルドしてください。
手動でビルドしたい場合はpipenv run jupyter lab build
です。
設定の方法
4種類の設定方法
設定方法は4つあります。
-
.ipynb
のメタデータを編集 jupytext --set-formats ipynb,py notebook.ipynb
-
~/.jupyter/jupyter_notebook_config.py
を編集 - jupytextの設定ファイルを作成
1, 2は各ファイルごとに設定が必要で面倒です。
3はリポジトリ外のファイル操作をさせる必要があるため動作が保証できません。
今回は4番について説明します。
このやり方だと他の人がリポジトリをプルした時でもすでに設定されているので優しいです。
設定ファイルの作成
設定ファイルは以下のいずれかの名前で作成します。
.jupytext
jupytext.toml
jupytext.yml
jupytext.yaml
jupytext.json
jupytext.py
またはこれらの先頭に.
を加えた形式
このファイルをプロジェクトのルートにおいておけば自動的に読み込んでくれます。
配置場所について詳細は参考リンクをご確認ください。
以下のように書くことで自動変換が効くようになります。今回はyamlで書きました。
default_jupytext_formats: "ipynb,py:percent"
VSCodeやPyCharmでの利用なども考えるとpythonファイルはpy:percent
形式がおすすめです。
結果こういう感じのディレクトリ構成になると思います。
.
├── Pipfile
├── Pipfile.lock
├── notebook.ipynb # 作成したnotebook
├── notebook.py # 変換されて生成したpython
└── jupytext.yml # 設定ファイル
まとめ
-
.ipynb <-> .py
変換を利用すればチームでのコード管理がしやすくなる。 - Jupytextはファイル保存時に自動変換することができる。
- Jupytextの設定方法は色々ある
- 設定ファイルを使えば設定を共有しやすい
-
py:percent
が無難
以上です!