Ubuntu18.04下Jupyter Notebook无法加载Python3内核求助
问题描述
在Ubuntu 18.04 (LTS) x64系统中运行Jupyter Notebook时,无法选择Python3内核,报错信息为:
Error loading kernelspec 'python3'
详细报错回溯如下:
Error loading kernelspec 'python3' Traceback (most recent call last): File "/home/of/.local/lib/python3.10/site-packages/jupyter_client/kernelspec.py", line 309, in get_all_specs spec = self._get_kernel_spec_by_name(kname, resource_dir) File "/home/of/.local/lib/python3.10/site-packages/jupyter_client/kernelspec.py", line 242, in _get_kernel_spec_by_name from ipykernel.kernelspec import RESOURCES, get_kernel_dict File "/home/of/.local/lib/python3.10/site-packages/ipykernel/kernelspec.py", line 18, in <module> from .debugger import _is_debugpy_available File "/home/of/.local/lib/python3.10/site-packages/ipykernel/debugger.py", line 40, in <module> raise e File "/home/of/.local/lib/python3.10/site-packages/ipykernel/debugger.py", line 23, in <module> from debugpy.server import api # noqa File "/home/of/.local/lib/python3.10/site-packages/debugpy/server/__init__.py", line 7, in <module> import debugpy._vendored.force_pydevd # noqa File "/home/of/.local/lib/python3.10/site-packages/debugpy/_vendored/force_pydevd.py", line 44, in <module> preimport('pydevd', [ File "/home/of/.local/lib/python3.10/site-packages/debugpy/_vendored/__init__.py", line 126, in preimport import_module(name) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/home/of/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py", line 5, in <module> __import__('pkg_resources').declare_namespace(__name__) File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 77, in <module> __import__('pkg_resources.extern.packaging.requirements') File "/usr/lib/python3/dist-packages/pkg_resources/_vendor/packaging/requirements.py", line 9, in <module> from pkg_resources.extern.pyparsing import stringStart, stringEnd, originalTextFor, ParseException File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 672, in _load_unlocked File "<frozen importlib._bootstrap>", line 632, in _load_backward_compatible File "/usr/lib/python3/dist-packages/pkg_resources/extern/__init__.py", line 43, in load_module __import__(extant) File "/usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py", line 943, in <module> collections.MutableMapping.register(ParseResults) AttributeError: module 'collections' has no attribute 'MutableMapping'
已尝试卸载并重装Jupyter Notebook,问题未解决。当前系统Python及Jupyter组件版本:
python --version && python3 --version Python 2.7.17 Python 3.10.11 jupyter --version Selected Jupyter core packages... IPython : 8.13.2 ipykernel : 6.23.0 ipywidgets : 8.0.6 jupyter_client : 8.2.0 jupyter_core : 5.3.0 jupyter_server : 2.5.0 jupyterlab : not installed nbclient : 0.7.4 nbconvert : 7.4.0 nbformat : 5.8.0 notebook : 6.5.4 qtconsole : 5.4.3 traitlets : 5.9.0
解决方案
核心问题是Python 3.10中collections.MutableMapping已被移至collections.abc.MutableMapping,而系统自带的pyparsing.py版本过旧,不兼容该变更。以下是三种解决方法:
方案1:更新setuptools
pkg_resources属于setuptools组件,更新setuptools可替换旧的pyparsing版本:
pip3 install --upgrade setuptools
方案2:手动修改pyparsing.py文件
若更新setuptools无效,直接修改出错文件:
- 打开目标文件:
sudo nano /usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py
- 找到第943行的
collections.MutableMapping.register(ParseResults),替换为:
try: from collections.abc import MutableMapping except ImportError: from collections import MutableMapping MutableMapping.register(ParseResults)
- 保存退出(按
Ctrl+O回车确认,再按Ctrl+X)
方案3:创建虚拟环境隔离依赖
避免系统Python版本冲突,在虚拟环境中安装Jupyter:
- 安装虚拟环境工具:
sudo apt install python3.10-venv
- 创建并激活虚拟环境:
python3.10 -m venv jupyter_env source jupyter_env/bin/activate
- 在虚拟环境中安装Jupyter:
pip install jupyter notebook
- 启动Jupyter Notebook:
jupyter notebook
内容的提问来源于stack exchange,提问作者FerencOlah
相关产品推荐
相关产品推荐

