日々精進

新しく学んだことを書き留めていきます

.ipynbから自分で作ったpythonモジュールをimportしている時に、モジュールを修正したらautoreloadする

notebookはファイルを分割できないので不便。共通の関数やクラスを.pyファイルに移してそれを再利用できるようにすべき。 その場合、notebookは.pyを修正してもimportし直してくれない。 pythonはimportしたコードをキャッシュするからだ。

以下をnotebookの最初に一度実行するとimportしているモジュールが修正されたらautreloadしてくれる(こともある)

%load_ext autoreload
%autoreload 2

autoreloadできないケースは以下。

  • @propertyがついているメソッドの修正
  • 関数の削除
  • C extension moduleの修正

これ以外にもうまくreloadできてないっぽいケースがあった。そういう時はKernelをリスタートする。

参考: ipython.readthedocs.io