Jupyter Notebook内で実行したコードに,Poetryでインストールしたモジュールをインポートする記述があると,ModuleNotFoundError というエラーが発生します.

原因は,システムにインストールされているJupyterが使っているPythonカーネルからはPoetryプロジェクトのvenvが参照できないことです.

これを解決するために,JupyterにPoetryが生成したvenvのカーネルを追加します.はじめに ipykernel モジュールをプロジェクトに追加します.

poetry add --dev ipykernel

poetry shell などで仮想環境に入ったのちに,次のコマンドを実行することでvenvのカーネルをJupyterに追加することができます.

ipython kernel install --user --name=your-project-name

Jupyter上でさきほど追加したカーネルを指定して実行することで,問題なくインポートを含むコードを実行することができます.

おまけ

Jupyterで使えるカーネルの一覧の確認

jupyter kernelspec list

追加したカーネルの削除

jupyter kernelspec remove your-kernel-name