Ubuntu24.04下Spyder6虚拟环境报错:No module named '_sqlite3'
问题:Spyder 6虚拟环境IPython控制台启动失败(_sqlite3模块缺失)
环境与操作
- 系统:Ubuntu 24.04
- IDE:Spyder 6
- 操作:将默认Python解释器切换至Python 3.11虚拟环境,并安装
spyder-kernels==3.0以启用IDE内IPython控制台 - 异常现象:虚拟环境下IPython控制台无法启动,抛出
ModuleNotFoundError: No module named '_sqlite3'错误;Spyder自带的默认解释器可正常运行IPython控制台
错误日志
Traceback (most recent call last): File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/spyder_kernels/console/__main__.py", line 24, in start.main() File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/spyder_kernels/console/start.py", line 151, in main import_spydercustomize() File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/spyder_kernels/console/start.py", line 41, in import_spydercustomize import spydercustomize # noqa ^^^^^^^^^^^^^^^^^^^^^^ File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/spyder_kernels/customize/spydercustomize.py", line 19, in from spyder_kernels.customize.spyderpdb import SpyderPdb File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/spyder_kernels/customize/spyderpdb.py", line 22, in from IPython.core.autocall import ZMQExitAutocall File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/IPython/__init__.py", line 55, in from .terminal.embed import embed File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/IPython/terminal/embed.py", line 15, in from IPython.core.interactiveshell import DummyMod, InteractiveShell File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/IPython/core/interactiveshell.py", line 110, in from IPython.core.history import HistoryManager File "/home/katmatzidis/.virtualenvs/r‑tensorflow/lib/python3.11/site‑packages/IPython/core/history.py", line 10, in import sqlite3 File "/home/katmatzidis/.pyenv/versions/3.11.10/lib/python3.11/sqlite3/__init__.py", line 57, in from sqlite3.dbapi2 import * File "/home/katmatzidis/.pyenv/versions/3.11.10/lib/python3.11/sqlite3/dbapi2.py", line 27, in from _sqlite3 import * ModuleNotFoundError: No module named '_sqlite3'
已尝试无效操作
- 执行命令
~/.virtualenvs/r-tensorflow/bin/pip install sqlite3和~/.virtualenvs/r-tensorflow/bin/pip install libsqlite3-dev,pip无法找到对应包 - 发现虚拟环境内
~/.virtualenvs/r-tensorflow/lib/python3.11/site-packages/jedi/third_party/django-stubs/django-stubs/db/backends/sqlite3路径下有sqlite3相关文件,但问题未解决
解决方案
原因说明
_sqlite3是Python的内置C扩展模块,无法通过pip安装,必须在编译Python时链接系统的sqlite3开发库。你使用pyenv安装Python 3.11.10时,系统缺少libsqlite3-dev依赖,导致编译出的Python未包含该模块,虚拟环境继承了这个缺陷。jedi路径下的文件是类型定义文件,不是实际可运行的模块,因此无法解决问题。
修复步骤
- 安装系统级sqlite3开发依赖
sudo apt update && sudo apt install libsqlite3-dev
- 重新编译Python 3.11.10
pyenv uninstall 3.11.10 pyenv install 3.11.10
- 重建虚拟环境并重新安装依赖
# 删除旧虚拟环境 rm -rf ~/.virtualenvs/r-tensorflow # 用重新编译后的Python创建新虚拟环境 python3.11 -m venv ~/.virtualenvs/r-tensorflow # 激活虚拟环境并安装所需包 source ~/.virtualenvs/r-tensorflow/bin/activate pip install spyder-kernels==3.0 # 额外安装你的项目依赖(如tensorflow等)
- 在Spyder 6中重新配置解释器:将默认解释器切换到新创建的虚拟环境路径
~/.virtualenvs/r-tensorflow/bin/python
内容的提问来源于stack exchange,提问作者katmatzidis
相关产品推荐
相关产品推荐

