🤖

jupyterで自作モジュールが更新されない

2024/04/27に公開

jupyterのnotebookで自作モジュールを呼び出した後に、自作モジュールを更新してnotebookで実行しても、変更が反映されません。

importlibを実行する必要があります。

モジュールのリロード

importで毎回、ファイルを読み込んでいるわけではありません。importするとpythonのインタプリタがビルドして、モジュールをキャッシュしています。キャッシュされていると、ファイルを変更しても再度読み込まれません。

jupyterの場合は、pythonのインタプリタが起動し続けて、セルを実行するため、importをしても、すでにキャッシュしているモジュールを再利用するため、自作モジュールを更新しても変更前の挙動になります。そのため、リロードする処理が必要になります。

importlib.reloadを使用して、ファイルを再読込する必要があります。

公式ドキュメントにも解説があります。

import Foo
importlib.reload(Foo) #importと同じモジュールを指定する。

import.reloadとは

インポートされたモジュールのリロードを行う。

この関数は、モジュールのソースファイルを外部エディタで編集していて Python インタープリタから離れることなく新しいバージョンのモジュールを試すことができる。

Discussion