背景
- Jupyterの設定のメモをここに残す
- 理由は、毎回リポジトリ毎にJupyterをインストールして消してを繰り返すため
- 公式のDockerのJupyterLabのImageを使ってもいいが、今回はホストマシンにインストールする
NOTE: 便宜上形式的に、Jupyter NotebookやJupyterLabの総称としてJupyterを使う。
Jupyterの設定
前提
Ubuntuで次のパッケージがインストールされている事を前提とする。
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のエディタでスムーズに開発するのは困難なため
フォルダ構成
- 下のようなフォルダ構造を作る
src
とnotebooks
のフォルダを分けて使うのを想定する- ファイル名は
00_xxx.ipynb
のようにSort番号を入れる src
の場合は、epx_01.py
のようにするexp
の接頭辞をつける理由は、importがそれがないとできないため
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
ファイルを用意する。
ノートブックの構成
ノートブックの中ではHeadingのToggleが効くので、次のような構成する。
- マジックコマンド
- import文
- srcの関数の読み込み
- メイン処理
マジックコマンド
次のマジックコマンドはいつも使うコマンドなので定型文となる。
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
|
出力のキャプチャ
Printなどで出した出力のキャプチャ方法。
まずは、出力したいセルでcapture
を打つ。
1
2
| %%capture output
print("need to be captured")
|
その後、新しいセルで保存する。
1
2
| with open("output.txt") as f:
f.write(output.stdout)
|
画像の文字化け対応
背景
- 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の中で試してみる。
日本語が文字化けしなくなったのでOK。
blackで自動フォーマット
インストールは次。
1
| $ pip install jupyter-black
|
利用方法はエクステンションを読み込むだけ。
1
| %load_ext jupyter_black
|
その後、そのNotebookのCellは保存時に自動的にBlackのフォーマットがかかる。
参考文献