notebookはファイルを分割できないので不便。共通の関数やクラスを.pyファイルに移してそれを再利用できるようにすべき。 その場合、notebookは.pyを修正してもimportし直してくれない。 pythonはimportしたコードをキャッシュするからだ。
以下をnotebookの最初に一度実行するとimportしているモジュールが修正されたらautreloadしてくれる(こともある)
%load_ext autoreload %autoreload 2
autoreloadできないケースは以下。
- @propertyがついているメソッドの修正
- 関数の削除
- C extension moduleの修正
これ以外にもうまくreloadできてないっぽいケースがあった。そういう時はKernelをリスタートする。