Featured image of post Jupyterの設定メモ

Jupyterの設定メモ

目次

背景

  • Jupyterの設定のメモをここに残す
  • 理由は、毎回リポジトリ毎にJupyterをインストールして消してを繰り返すため
  • 公式のDockerのJupyterLabのImageを使ってもいいが、今回はホストマシンにインストールする

NOTE: 便宜上形式的に、Jupyter NotebookやJupyterLabの総称としてJupyterを使う。

Jupyterの設定

前提

Ubuntuで次のパッケージがインストールされている事を前提とする。

  • Python >3.7
  • Node > 16

Jupyterのインストール

下記でインストールする。

1
$ pip install jupyterlab 

また、RStudioと同じように変数一覧をするvariableinspectorと、VIMが使えるようになるjupyterlab_vimも合わせてインストールする。

1
2
$ jupyter labextension install @lckr/jupyterlab_variableinspector
$ jupyter labextension install @axlair/jupyterlab_vim

最後によく使うJupyterで使うパッケージもインスコする。 なお、GPUを使うTorchなどは環境に合わせてインストールする。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ pip install jupyter-black
$ pip install python-dotenv
$ pip install tqdm
$ pip install scipy
$ pip install numpy
$ pip install requests
$ pip install openai
$ pip install opencv-python
$ pip install matplotlib
$ pip install pandas
$ pip install scikit-learn
$ pip install scikit-image
$ pip install tensorflow
$ pip install "torch==1.4.0+cpu" "torchvision==0.5.0+cpu" -f https://download.pytorch.org/whl/torch_stable.html

Jupyterの起動

次のように起動するとJupyterのトークンをスキップできる。 もしくは、jupyter notebook --generate-configコマンドなどを利用して、設定しても良い。

1
$ jupyter lab --ip='*' --NotebookApp.token='' --NotebookApp.password=''

お決まり

お決まりの実験手法

  • まず、お決まりの実験手法としてsrcとnotebooksに分離する
  • コードはsrc、実行はnotebooksに残す
  • 理由は、数百行のコードをnotebooksのエディタでスムーズに開発するのは困難なため

フォルダ構成

  • 下のようなフォルダ構造を作る
  • srcnotebooksのフォルダを分けて使うのを想定する
  • ファイル名は00_xxx.ipynbのようにSort番号を入れる
  • srcの場合は、epx_01.pyのようにする
    • expの接頭辞をつける理由は、importがそれがないとできないため
      • expはexperimentの意味
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
- document root
  - .env
  - src
    - exp_01.py
    - exp_02.py
    - exp_03.py
  - notebooks
    - 01_xxx.ipynb
    - 02_xxx.ipynb
    - 03_xxx.ipynb
  - datasets

dotenvを使ってenvファイルを読むので、次のような.envファイルを用意する。

1
DATA_ROOT=./data

ノートブックの構成

ノートブックの中ではHeadingのToggleが効くので、次のような構成する。

  • マジックコマンド
  • import文
  • srcの関数の読み込み
  • メイン処理

マジックコマンド

次のマジックコマンドはいつも使うコマンドなので定型文となる。

1
2
%pwd
%cd ../
1
2
3
%load_ext autoreload
%load_ext dotenv
%load_ext jupyter_black
1
2
3
%autoreload 2
%dotenv
%matplotlib inline

Import文

次のImport文などは、お決まりのimport文になる。

1
2
3
4
5
6
7
import sys
import os
from PIL import Image
import numpy as np
import pandas as pd
import cv2
import matplotlib.pyplot as plt

お決まり文

画像のサイズの調整。

1
plt.figure(figsize=(15,8))

srcに置いたスクリプトの読み込み。

1
2
3
notebook_path = os.path.abspath(os.getcwd())
src_path = os.path.join(notebook_path, "src")
sys.path.append(src_path )

Jupyterのカーネルの追加

次のようにしてpyenv local xxxで固定したバージョンのkernelを用意する。

1
2
$ pip install ipykernel
$ python -m ipykernel install --user --name pyenv-kernel

画像の文字化け対応

背景

  • matplotlibで画像を表示したときに文字化けすることがある
  • 対策としてはmatplotlibにIPAフォントを適用すること

IPAフォントのインストール

次でIPAfontのインスコ。

1
2
$ sudo apt install -y fonts-ipafont
$ fc-cache -fv

次のコマンドで確認。

1
2
3
4
5
6
7
$ fc-list | grep -i ipa
/usr/share/fonts/opentype/ipafont-mincho/ipam.ttf: IPAMincho,IPA明朝:style=Regular
/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf: IPAPGothic,IPA Pゴシック:style=Regular
/usr/share/fonts/opentype/ipafont-mincho/ipamp.ttf: IPAPMincho,IPA P明朝:style=Regular
/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf: IPAGothic,IPAゴシック:style=Regular
/usr/share/fonts/truetype/fonts-japanese-mincho.ttf: IPAMincho,IPA明朝:style=Regular
/usr/share/fonts/truetype/fonts-japanese-gothic.ttf: IPAGothic,IPAゴシック:style=Regular

jupyterのキャッシュの削除

Ubuntuの場合は次のように行った。

1
$ rm ~/.cache/matplotlib/fontList.json

ファイルパスの設定

まずは設定ファイルのパスを確認。

1
2
import matplotlib
print(matplotlib.matplotlib_fname())

/home/mike/.config/matplotlib/matplotlibrc となった。

次で設定ファイルの確認。

1
$ cat /home/mike/.config/matplotlib/matplotlibrc

font.family : IPAGothicとなった。

画像のテスト

試しにJupyterの中で試してみる。

1
plt.title("日本語title")

日本語が文字化けしなくなったのでOK。

blackで自動フォーマット

インストールは次。

1
$ pip install jupyter-black

利用方法はエクステンションを読み込むだけ。

1
%load_ext jupyter_black

その後、そのNotebookのCellは保存時に自動的にBlackのフォーマットがかかる。

参考文献

Built with Hugo
テーマ StackJimmy によって設計されています。