You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编译带SQLite3的Python3.10以解决Jupyter运行报错问题

解决Python 3.10 + Jupyter 缺少sqlite3的问题

我通过以下命令安装了Python 3.10:

me@mydevice:~$ sudo add-apt-repository ppa:deadsnakes/ppa
me@mydevice:~$ sudo apt update
me@mydevice:~$ sudo apt install python3.10

创建虚拟环境并安装Jupyter后,无法启动Jupyter,提示找不到sqlite3。

具体报错信息

第一次报错(保留原try-except逻辑):

Traceback (most recent call last):
  File "/home/project_path/venv/bin/jupyter-notebook", line 5, in <module>
    from notebook.app import main
  File "/home/project_path/venv/lib/python3.10/site-packages/notebook/app.py", line 17, in <module>
    from jupyter_server.serverapp import flags
  File "/home/project_path/venv/lib/python3.10/site-packages/jupyter_server/serverapp.py", line 95, in <module>
    from jupyter_server.gateway.managers import (
  File "/home/project_path/venv/lib/python3.10/site-packages/jupyter_server/gateway/managers.py", line 30, in <module>
    from ..services.sessions.sessionmanager import SessionManager
  File "/home/project_path/venv/lib/python3.10/site-packages/jupyter_server/services/sessions/sessionmanager.py", line 17, in <module>
    from pysqlite2 import dbapi2 as sqlite3  # type:ignore[no-redef]
ModuleNotFoundError: No module named 'pysqlite2'

查看sessionmanager.py的导入逻辑:

try:
    import sqlite3
except ImportError:
    # fallback on pysqlite2 if Python was build without sqlite
    from pysqlite2 import dbapi2 as sqlite3  # type:ignore[no-redef]

移除try-except仅保留import sqlite3后,报错:

File "/home/project_path/venv/lib/python3.10/site-packages/jupyter_server/services/sessions/sessionmanager.py", line 14, in <module>
    import sqlite3
  File "/usr/lib/python3.10/sqlite3/__init__.py", line 57, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/lib/python3.10/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: /usr/lib/python3.10/lib-dynload/_sqlite3.cpython-310-x86_64-linux-gnu.so: undefined symbol: sqlite3_trace_v2

尝试pip install pysqlite、pip install sqlite3等命令均无法找到匹配包,需要编译带sqlite3的Python 3.10。


编译带sqlite3的Python 3.10步骤

1. 卸载现有PPA安装的Python 3.10

移除通过deadsnakes安装的版本,避免冲突:

sudo apt purge python3.10
sudo apt autoremove
sudo apt clean

2. 安装编译依赖

安装编译Python所需的基础工具和sqlite3开发库:

sudo apt update
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget libsqlite3-dev

其中libsqlite3-dev是确保Python编译时能链接sqlite3的关键依赖。

3. 下载Python 3.10源码

以3.10.12版本为例,可替换为最新的3.10.x稳定版:

wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
tar -xf Python-3.10.12.tgz
cd Python-3.10.12

4. 配置编译选项

指定编译参数,强制启用sqlite3集成:

./configure --enable-optimizations --with-sqlite3
  • --enable-optimizations:开启编译优化,提升Python运行性能
  • --with-sqlite3:强制链接系统sqlite3库,确保集成生效

5. 编译并安装

根据CPU核心数调整-j参数(比如4核用-j4),加快编译速度:

make -j$(nproc)
sudo make altinstall

用altinstall避免覆盖系统默认Python版本。

6. 验证sqlite3集成

运行以下命令确认Python已正确集成sqlite3:

python3.10 -c "import sqlite3; print(sqlite3.sqlite_version)"

若能正常打印sqlite版本号,说明集成成功。

7. 重新配置虚拟环境与Jupyter

用编译好的Python 3.10创建虚拟环境并安装Jupyter:

python3.10 -m venv /home/project_path/venv
source /home/project_path/venv/bin/activate
pip install jupyter

启动Jupyter验证:

jupyter notebook

内容的提问来源于stack exchange,提问作者rosecabbagedragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:47:21