安装Jupyter Notebook的nbextensions时遇ModuleNotFoundError错误求助
问题描述
这已经是我第1000次尝试为Jupyter Notebook安装nbextensions了,但每次都会触发错误:ModuleNotFoundError: No module named ‘notebook.base’。
我严格按照说明在Windows 11的CMD中执行以下操作:
- 运行
pip install notebook安装Notebook; - 运行
pip install jupyter_contrib_nbextensions下载相关包; - 执行
jupyter contrib nbextension install --user尝试安装扩展,就在这一步触发了错误:from notebook.base.handlers import APIHandler, IPythonHandler ModuleNotFoundError: No module named ‘notebook.base’。
我已尝试以下解决方法但均无效:
- 执行
pip install --upgrade --force-reinstall notebook重新安装Notebook; - 卸载并重新安装nbextensions:
pip install jupyter_contrib_nbextensions; - 创建虚拟环境(venv)并在其中尝试安装扩展;
- 执行
pip cache purge清理包缓存; - 重新安装Python,但结果依旧。
我的环境是:
- Python 3.11.4(最新版),安装时已将路径添加到环境变量,且创建了PYTHONPATH变量,路径为
C:\Users\Nikita\AppData\Local\Programs\Python\Python311。
恳请帮忙解决该问题,或推荐一款可实现类似autopep8代码格式化功能的Jupyter Notebook替代扩展。
错误日志
C:\Users\Никита>jupyter contrib nbextension install --user Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Scripts\jupyter-contrib.EXE\__main__.py", line 7, in <module> File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\jupyter_core\application.py", line 285, in launch_instance return super().launch_instance(argv=argv, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\traitlets\config\application.py", line 1041, in launch_instance app = cls.instance(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\traitlets\config\configurable.py", line 551, in instance inst = cls(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\jupyter_contrib_core\application.py", line 27, in __init__ self._refresh_subcommands() File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\jupyter_contrib_core\application.py", line 43, in _refresh_subcommands get_subcommands_dict = entrypoint.load() ^^^^^^^^^^^^^^^^^ File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\pkg_resources\__init__.py", line 2471, in load return self.resolve() ^^^^^^^^^^^^^^ File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\pkg_resources\__init__.py", line 2477, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\jupyter_contrib_nbextensions\__init__.py", line 5, in <module> import jupyter_nbextensions_configurator File "C:\Users\Никита\AppData\Local\Programs\Python\Python311\Lib\site-packages\jupyter_nbextensions_configurator\__init__.py", line 18, in <module> from notebook.base.handlers import APIHandler, IPythonHandler ModuleNotFoundError: No module named 'notebook.base'
解决方案
一、修复nbextensions安装错误
这个错误的核心原因是jupyter_contrib_nbextensions与新版Notebook(>=7.x)不兼容——新版Notebook重构了代码结构,移除了notebook.base模块,而旧版nbextensions仍在调用这个已被删除的模块。
解决步骤如下:
- 卸载当前的Notebook,安装兼容的旧版本:
pip uninstall -y notebook pip install notebook==6.5.6 - 重新安装并配置nbextensions:
pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user jupyter nbextensions_configurator enable --user - 启动Jupyter Notebook,此时应该能正常看到nbextensions的配置界面。
如果之后需要使用新版Notebook,建议等nbextensions官方更新兼容版本后再升级。
二、替代的代码格式化扩展推荐
如果不想降级Notebook,推荐以下两款实现autopep8格式化功能的工具:
- Black Formatter
- 安装命令:
pip install black jupyter-black - 使用方式:安装后重启Notebook,在单元格菜单中选择「Black Format Cell」或「Black Format All Cells」即可完成格式化,它默认遵循PEP8规范,且支持一键配置快捷键。
- 安装命令:
- autopep8原生插件
- 安装命令:
pip install autopep8 jupyter-autopep8 - 使用方式:重启Notebook后,在单元格右键菜单中选择「autopep8 format」即可直接格式化代码,完全匹配你需要的autopep8功能。
- 安装命令:
内容的提问来源于stack exchange,提问作者Nikita Shilyaev
相关产品推荐
相关产品推荐

