🤖
jupyterで自作モジュールが更新されない
jupyterのnotebookで自作モジュールを呼び出した後に、自作モジュールを更新してnotebookで実行しても、変更が反映されません。
importlibを実行する必要があります。
モジュールのリロード
importで毎回、ファイルを読み込んでいるわけではありません。importするとpythonのインタプリタがビルドして、モジュールをキャッシュしています。キャッシュされていると、ファイルを変更しても再度読み込まれません。
jupyterの場合は、pythonのインタプリタが起動し続けて、セルを実行するため、importをしても、すでにキャッシュしているモジュールを再利用するため、自作モジュールを更新しても変更前の挙動になります。そのため、リロードする処理が必要になります。
importlib.reloadを使用して、ファイルを再読込する必要があります。
公式ドキュメントにも解説があります。
import Foo
importlib.reload(Foo) #importと同じモジュールを指定する。
import.reloadとは
インポートされたモジュールのリロードを行う。
この関数は、モジュールのソースファイルを外部エディタで編集していて Python インタープリタから離れることなく新しいバージョンのモジュールを試すことができる。
Discussion