Skip to content

解决Jupyter安装nbextensions时的ModuleNotFoundError

安装Jupyter Notebook扩展(nbextensions)时出现ModuleNotFoundError: No module named 'notebook.base'错误是常见的兼容性问题,通常由版本冲突引起。下文提供两种主要解决方案。

🛠 解决方案一:降级关键包(推荐)

该问题主要由新版notebooktraitlets包与jupyter_contrib_nbextensions的兼容性问题导致。

具体步骤

bash
# 卸载冲突包
pip uninstall -y notebook traitlets jupyter

# 安装指定版本的核心包
pip install notebook==6.4.12 traitlets==5.9.0

# 重新安装nbextensions
pip install --upgrade jupyter jupyter_contrib_nbextensions

# 初始化nbextensions
jupyter contrib nbextension install --user

注意事项

  1. 在虚拟环境中操作可避免污染全局环境
    bash
    python -m venv jupyter_fix_env
    source jupyter_fix_env/bin/activate  # Linux/Mac
    jupyter_fix_env\Scripts\activate    # Windows
  2. 出现TypeError: warn() missing stacklevel错误时,需额外安装:
    bash
    pip install ipython==8.9.0

🔧 解决方案二:使用Conda通道安装

若使用Conda环境,通过conda-forge通道安装可自动解决依赖问题。

bash
# 安装核心组件
conda install -c conda-forge notebook

# 安装nbextensions
conda install -c conda-forge jupyter_contrib_nbextensions

# 初始化扩展
jupyter contrib nbextension install --user

启用扩展示例

bash
# 启动配置器
jupyter nbextensions_configurator enable --user

# 启用特定扩展(如代码格式化工具)
jupyter nbextension enable code_prettify/code_prettify

版本兼容检查

执行命令验证版本信息:

bash
jupyter --version

正常输出应包含:

notebook==6.5.7      # 6.x版本均兼容
traitlets==5.14.3

🔍 验证与故障处理

  1. 验证安装:重启Jupyter Notebook,导航到http://localhost:8888/nbextensions
  2. 缓存清理:若错误依旧,清除pip缓存后重试
    bash
    pip cache purge
    pip cache remove *
  3. 环境复位:创建全新虚拟环境操作
    bash
    python -m venv new_jupyter_env

🌐 替代扩展推荐

扩展名称功能描述安装方式
jupyterlab-code-formatter代码格式化(支持Black等)pip install jupyterlab-code-formatter
autopep8PEP8规范自动格式化pip install autopep8
jupyter-black实时Black代码格式化pip install jupyter-black

::: success 最终建议

  1. 推荐优先采用降级方案
  2. 长期项目建议锁定依赖版本:
    txt
    # requirements.txt
    notebook==6.4.12
    traitlets==5.9.0
    jupyter_contrib_nbextensions==0.7.0
  3. 开发者可考虑迁移至JupyterLab,使用原生扩展管理系统规避此类问题 :::