LoginSignup
4
4

More than 1 year has passed since last update.

【 jupytext】Jupyterファイルをより扱いやすくする(.ipynb⇔.py)

Posted at

はじめに

本記事では下記2021年ベストPythonライブラリに出てくるライブラリの中から、一番お手頃に使えそうだったjupytextを紹介します。

2021年Pythonベストライブラリ(TOP10)って何・・?
・Tryolabsという企業のCTOが2015年以降で毎年最新のPythonライブラリを自社Blogで紹介してる
・2021年に公開 or 普及されはじめたライブラリのみでnumpy等の既知のライブラリは対象外
・メンテナンス等の活動も活発に行われているものが対象らしい

つまり勝手に著者が選んでるだけであり、ランキング自体にはあまり意味がない気もします。
が、我々が知らないような良さげなライブラリを発見できる1つの手段としてはいい機会かな?と思いましたので記事にしようと思った次第です。

  • 動作環境
    • OS : Windows10 pro
    • Python : 3.8.3
    • jupytext:1.13.4
    • jupyter notebook(JupyterLabでもOKらしい)

jupytextに関して

jupytextはJupyter Notebookのプラグインで、.py.ipynb双方向変換を提供するものです。
要するにjupyterで作成したプログラムの保存時に.pyを自動作成してくれ、さらにpyとipynbの相互補完機能を持つライブラリです。(具体例は記事内で)

jupytextの使い方

まずはjupytextをインストールします。(pip install jupytext)

でインストール後にJupyter Notebookを再度立ち上げます。
そしてPythonファイル(.ipynbファイル)を作成します。

さてここからがJupytextの出番ですが、使い方には以下3パターンの方法があります。
ファイルの出力場所やデフォルト設定等でご自身の一番使いやすいケースで使ってください。

①Jupytextメニューの「jupytext」から保存形式を選択する方法

これが一番簡単です。
メニュー画面のFile>>Jupytext>>Pair Notebook with light Scriptにチェックを入れるだけです。
(参考)lightフォーマットに関して

これにチェックを入れた状態でノートブックを「保存」すると・・
なんと自動で.pyファイルが作成されている上に、当然.pyファイルなので好きなテキストエディタで開くことが出来ます。

さらに.pyファイル自体もjupyterで編集することも可能です
Jupytextを入れる前は左下図のように.pyファイルはJSON形式でしか表示されないが、入れた後は.ipynbと同じように編集可能になる。

さらに、この.pyファイルと.ipynbファイルは自動で相互保存される為、例えば以下のように.pyファイルを別のエディタで編集したとしても、元の.ipynbにもその変更が反映されます。※逆もしかり

これがこのライブラリの双方向変換機能になります。

②Jupytextメニューの「Edit Notebook Metadata」で設定する方法

.pyファイルを同じディレクトリではなく、混同を防ぐために保存場所を変えたい場合はこれを使えばOK。
※例では先頭に追加してるが、場所はどこでもいい。普通は最後に追加する?

・以下コピペ用
"jupytext": {
 "formats": "ipynb,py_scripts//py:light",
},

すると、指定した場所に.pyが出力されまs。

③jupyter_notebook_config.pyから設定する方法

上述2方法は毎回ファイル毎に設定が必要。
しかし、configをいじることでデフォルト設定として.pyも同時出力されるように設定可能になります。

jupyter notebook --generate-configでまずはconfigを作成
(※すでに以前作成してある場合はコマンドで上書きするかのyes/no問われるのと同時に出力場所が出るためそれを編集する)

・以下コピペ用(どっちか好きな形式を選べばOK。保存場所もpy_scriptではなく変更OK)
c.ContentsManager.default_jupytext_formats = "ipynb,py:light"
c.ContentsManager.default_jupytext_formats = "ipynb,py_script//py:light"

おわりに

jupyterで書いたスクリプトを別のエディタで読みたい!等はjupyter使いあるあるだと思います。
そんな時にこのライブラリを使えば簡単に中身見れるし、相互で自動変換されるので個人的にも今後使おうと考えてます。

それでは今回はここまで。

(参考)lightフォーマットに関して

light scriptって何者?という疑問を持たれる方がいると思うので一応触れておくと、どうやら.pyと.ipynbの変換の形式だそうで、コメントアウトの#の後にスペース+#でマークダウンとみなす・・等の機能が備わっているらしいです。

※他の方の書いてる解説サイトではc.ContentsManager.default_jupytext_formats = "ipynb,py"というように「:light」を書いてないケースが多かったですが、その場合どの書式に該当するかまでは今回検証してません。

9.png

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4