Skip to content

Jupyter Notebook拡張機能インストール時のModuleNotFoundError対処法

問題の概要

Jupyter Notebookに**jupyter_contrib_nbextensions**をインストールする際、以下のエラーが発生する問題がよく報告されています:

ModuleNotFoundError: No module named 'notebook.base'

このエラーは主に以下の操作後に発生します:

  1. pip install notebook でJupyter Notebookをインストール
  2. pip install jupyter_contrib_nbextensions で拡張機能をインストール
  3. jupyter contrib nbextension install --user 実行時にエラー発生

よくある環境

  • Windows 11 システム
  • Python 3.11 以降のバージョン
  • pipを使用したインストール

根本原因

このエラーの主な原因はバージョン互換性の問題です:

  • 最新版のJupyter Notebook(バージョン7.0以降)ではモジュール構造が変更され、notebook.baseが存在しなくなりました
  • jupyter_contrib_nbextensionsがまだ新しい構造に対応していないため発生
  • Python 3.11の変更も一部影響している可能性があります

注意

問題を解決しようとして以下の方法を試しても効果がないことが確認されています:

  • Notebookの再インストール(--upgrade --force-reinstall
  • nbextensionsの再インストール
  • 仮想環境の作成
  • pipキャッシュのクリア

効果的な解決策

方法1: Notebookとtraitletsのバージョンダウングレード(pipユーザー向け)

最も確実で多くの場合に有効な解決策:

bash
# 既存の競合パッケージをアンインストール
pip uninstall notebook traitlets jupyter

# 互換性のあるバージョンを再インストール
pip install notebook==6.4.12 traitlets==5.9.0

# 必要な拡張機能をインストール
pip install jupyter_contrib_nbextensions

その後、拡張機能をインストール:

bash
jupyter contrib nbextension install --user

IPythonユーザー向け追加処置

上記を実行後もエラーが発生する場合、IPythonのバージョンも調整が必要:

bash
pip uninstall ipython
pip install ipython==8.9.0

方法2: Condaを使用したインストール(Anacondaユーザー向け)

conda環境を使用している場合、conda-forgeチャネルからインストールすることで解決できます:

bash
conda install -c conda-forge notebook
conda install -c conda-forge jupyter_contrib_nbextensions

インストール後、拡張機能を有効化:

bash
jupyter contrib nbextension install --user

方法3: 仮想環境を使用したクリーンインストール

グローバル環境を変更したくない場合、仮想環境を作成して試す方法:

bash
python -m venv jupyter_env  # 仮想環境作成
source jupyter_env/bin/activate  # Windowsなら .\jupyter_env\Scripts\activate
pip install notebook==6.4.12 traitlets==5.9.0
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

インストール後の拡張機能有効化

インストールが成功したら、必要な拡張機能を有効化します(例:Blackフォーマッタ):

bash
jupyter nbextensions_configurator enable --user
jupyter nbextension enable jupyter-black-master/jupyter-black

代替拡張機能(autopep8代替)

問題が解決しない場合、コードフォーマット用の代替拡張機能:

  1. jupyterlab_code_formatter

    • JupyterLab用だがNotebookでも使用可能
    • Black, autopep8, yapfなどをサポート
    • インストール: pip install jupyterlab_code_formatter
  2. nb_black

    • Blackフォーマッタを直接統合
    • インストール: pip install nb_black

補足情報

動作確認バージョン

成功例で報告されているパッケージバージョン:

notebook         : 6.4.12
traitlets        : 5.9.0
jupyter_client   : 7.4.9
ipython          : 8.9.0

将来の互換性について

jupyter_contrib_nbextensionsの開発チームは新しいNotebookバージョンへの対応を進めていますが、現時点(2024年)ではまだ完全な対応がされていないため、上記のバージョン調整が必要です。

重要

本解決法はWindows環境に限らず、macOSやLinuxでも同様に有効です。環境変数PYTHONPATHの設定は、本問題とは直接関係ありません

これらの手順により、ModuleNotFoundError: No module named 'notebook.base'エラーは解決し、Jupyter Notebook拡張機能が正常にインストール・使用できるようになります。