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

Python虚拟环境中Python调用sqlite版本与命令行版本不一致如何解决

问题原因

命令行调用的sqlite3是系统独立安装的二进制程序,对应3.36.0版本;但Python内置的sqlite3扩展模块在编译时默认链接了系统全局的旧版sqlite3动态库,因此在Python中查询得到的版本为3.7.17,不符合Django运行要求。

解决方案

方法1:使用pysqlite3替代内置sqlite3(推荐,无需重新编译Python)

  • 提前确认新版sqlite3的安装路径,假设你将3.36版本的sqlite3安装在/usr/local/sqlite3.36路径下
  • 激活虚拟环境,执行以下命令安装pysqlite3,绑定新版sqlite3库:
export LD_LIBRARY_PATH=/usr/local/sqlite3.36/lib:$LD_LIBRARY_PATH
export CPATH=/usr/local/sqlite3.36/include:$CPATH
pip install pysqlite3 --no-binary :all:

如果你的系统软件源已经提供了新版sqlite3开发包,可以直接安装预编译版本:

pip install pysqlite3-binary
  • 打开Django项目的settings.py文件,在文件最开头添加以下代码,将内置sqlite3替换为pysqlite3:
import pysqlite3
import sys
sys.modules['sqlite3'] = pysqlite3

修改完成后重新启动Django即可。

方法2:重新编译Python绑定新版sqlite3(无需修改项目代码)

  • 下载对应版本的Python源码包(你当前使用的是3.6.8版本)并解压
  • 执行配置命令时指定新版sqlite3的安装路径:
./configure --prefix=你自定义的Python安装路径 --with-sqlite3=/usr/local/sqlite3.36
  • 执行编译安装命令:
make && make install
  • 使用新编译的Python重新创建虚拟环境,再安装项目依赖即可。

方法3:临时修改动态库加载路径(适合临时测试)

激活虚拟环境后,启动Python或Django服务前先设置动态库查找路径,优先加载新版sqlite3的库文件:

export LD_LIBRARY_PATH=/usr/local/sqlite3.36/lib:$LD_LIBRARY_PATH
# 后续启动Django服务
python manage.py runserver

该方法仅对当前终端会话生效,每次启动服务都需要先执行上述变量设置命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:02