Pynote

Python、機械学習、画像処理について

Python - JupyterLab でコードの自動整形を行う方法について

概要

JupyterLab にコードの自動整形を行う拡張「jupyterlab_code_formatter」を導入する方法について紹介する。

JupyterLab の紹介及び使い方については以下の記事を参照されたい。

pynote.hatenablog.com

nodejs をインストールする。

JupyterLab の拡張機能を使用するには、nodejs が必要である。
NodeSource Node.js Binary Distributions の指示通り、インストールを行う。

curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y --no-install-recommends \
    nodejs

拡張をインストールする。

自動整形ツール Black、YAPF、Autopep8 を使用して JupyterLab 上からコードの自動整形が行える拡張機能 jupyterlab_code_formatter をインストールする。

1. 自動整形ツールをインストールする。

以下のうち、使用したい自動整形ツールをインストールする。

# black は最新バージョンでは動かないので 18.9b0 を指定
pip install black==18.9b0
pip install yapf
pip install autopep8

2. 拡張をインストールする。

pip install jupyterlab_code_formatter
jupyter labextension install @ryantam626/jupyterlab_code_formatter
jupyter serverextension enable --py jupyterlab_code_formatter

3. JupyterLab を起動する。

すでに起動している場合は、一旦終了して再起動する。

使い方

コマンドパレット内の「JUPYTERLAB CODE FORMATTER」の「Apply <FORMATTER_NAME> Formatter」を実行する。
すると、編集中のコードセルが自動整形される。
コマンドパレットで選択するのが面倒である場合、メニューバーの「Advanced Settings Editor」を開き、「KeyBoard Shortcuts」にショートカットを設定する。

以下の例は、コードを編集中に「Ctrl + E」を押すと、black で自動整形するショートカットである。

{  
   "shortcuts":[  
      {  
         "command":"jupyterlab_code_formatter:black",
         "keys":[  
            "Ctrl E"
         ],
         "selector":".jp-Notebook.jp-mod-editMode"
      }
   ]
}