Jupyterのノートブックに書いたPythonコードを別のノートブックからモジュールのようにimportしたいことがあります。しかし、単純に
とすると ModuleNotFoundError が出てしまいます。ノートブックは書式も拡張子もPythonスクリプトと異なるためです。ノートブックを編集するたびにスクリプトを手動で書き出してimportすれば済むことではありますが、面倒でたまりませんしバージョンの食い違いによる問題が起こりがちです。
解決法
最も手軽な方法
ノートブックが保存されると自動的に同じディレクトリにスクリプトが書き出されるよう設定することで、擬似的にではありますが、あたかもノートブックを直接importできるようになったかのように、ノートブックをまたいで快適に作業することができます。設定ファイルに## DEPRECATED, use post_save_hook. Will be removed in Notebook 5.0
と告知されていますが、この方法はversion 6.0.1でまだ使えています。
手順
- 設定ファイル
~/.jupyter/jupyter_notebook_config.py
をテキストエディタで開く。
註)環境やインストール方法によりディレクトリが異なるかもしれません。また、ファイルが存在しなければ、まずjupyter lab --generate-config
とコマンドを打って初期設定値のファイルを作る必要があります。 #c.FileContentsManager.save_script = False
の行の1文字目 # を削除し、FalseをTrueに書き換える。- 保存する。