LoginSignup
2
4

More than 3 years have passed since last update.

jupytextで*.ipynbから*.pyに変換する[メモ]

Posted at

jupytextのメリット

jupyter notebookで使われる拡張子(.ipynb)のファイルを保存すると、自動でPythonデフォルトの拡張子(.py)のファイルが生成されるというもの。

  • ファイル変換のメリット
    • gitにcommitする際にipynbだとjson形式になってファイルが重くなる。
    • ipynbだとセルの実行回数も記録されるのでgitの管理も難しい。
    • GitHubで公開すると表示に時間がかかる。

以上から.py形式で管理する方がいいと思う。

nbconvertを使ってもファイル変換はできる。

開発環境

OSはMacを使っています。
環境構築はpyenvのPython3.8.6

手順

pyenvで環境構築

今回はpyenvでjupyter notebookを開きます。

$ pyenv virtualenv 3.8.6 hoge  #hogeという名前の環境を作る
$ pyenv local 3.8.6 hoge       #環境の切り替え
$ python --version             #切り替わっているかを確認
     // Python 3.8.6
$ pip install jupyterlab==2.2.8 #jupyterlabのインストール
$ jupyter lab                   #jupyterlabが立ち上がることを確認

jupytextのインストール

jupytextはpipでインストールできます。

$ pip install jupytext

ここで注意するべきなのはこのGitHubのページでもある通り、jupytextとjupyterlabの互換性です。自分はここでつまずいて、解決するのに時間がかかったので注意してください。https://github.com/mwouts/jupytext

ここの文章を要約すると、
jupytextの最新版はJupyterLabのver3.0以降に対応しています。
JupyterLab2.Xで使用する場合は以下のインストールを行なってね。
とのことです。
以下のコマンドを実行してJupyterLabの拡張機能にjupytextをインストールしていきます。

$ jupyter labextension install jupyterlab-jupytext@1.2.2

jupytext.ymlファイルを作る

プロジェクトのルートディレクトリか、コンピュータのホームディレクトリの.configフォルダにjupytext.ymlファイルを作る。
jupytextは設定ファイルを作る必要があります。
vimで設定ファイルの作成を行います。
コマンドでjupytext.ymlを作って編集する。ファイル名はymlを使っていますがファイル名の頭に.をつけても大丈夫だと思います。
ターミナルから以下のコマンド

$ vim ~/.config/jupytext.yml

jupytext.yml内に以下を記述する。

default_jupytext_formats: "ipynb,jupytext_py//py:percent"
default_notebook_metadata_filter: "-all"
default_cell_metadata_filter: "-all"

この後jupyter labのlocalhostを再起動することで、jupyter labのビルドを行うかという主旨のポップアップが出てくると思うので、Yesを選択すればjupytextが入ると思います。

もしビルドができなければターミナルから以下のコマンドでビルドできます。

$ jupyter lab build          #jupytextをビルド
$ jupyter labextension list  #ちゃんとビルドされたか確認

おわりに

これでjupyter labでipynbファイルを作成したら同時にpythonファイルが作成されると思います。もし、間違いや質問があれば僕のTwitterの方にDMをもらえたらと思います。

2
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
2
4