概要:
编写此文是因为在Linux上跑Django项目时报错:sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or highe(此时已经安装了python3)。查询之后发现是因为centos上的sqlite3版本过低导致。
去验证一下:在centos上进入python,可以看到sqlite3的版本为3.7.17。
Python 3.8.12 (default, Jun 21 2019, 00:36:41) |
原因已经找到,下面开始执行。
因为sqlite3是在python3安装时进行连接的,我的云服务器已经安装过了,所以需要卸载,如果还没有安装python3的,可以跳过这一步。
注:此处仅删除python3,尽量别删除原装的python2.7.5,因为centos7有一些命令是依赖2.7.5的。
whereis python3 |xargs rm -frv # 此为强制删除,也可以使用yum命令删除 |
二、下载、编译、安装新版SQLite
1.下载新版sqlite
注:此处给两种下载方法,都可以使
(1)下载前需要建立一个文件夹,用于放置压缩包。此处选择/home为主目录,可以根据自身习惯更改下载存储地址。
mkdir /root/sqlite3 |
2.使用wget下载
到SQLite官网的下载页面:https://sqlite.org/download.html 这里是最新的版本。

源码有两个文件,选择第二个(sqlite-autoconf-3420000.tar.gz),因为这个有配置文件。复制其链接,然后在终端执行:
cd /home/tools/sqlite3 #切换到下载路径 |
等待下载完毕即可
3.本地下载,再上传到云服务器
还是这个网址:https://sqlite.org/download.html ,然后点击(sqlite-autoconf-3420000.tar.gz)直接下载到Windows本地
然后通过electerm的sftp直接上传到/home/tools/sqlite3
上传方式不一,自行选择(Xshell或者Winscp都可)
4.解压
tar -zxvf sqlite-autoconf-3420000.tar.gz |
解压后可以看到有新的文件夹:sqlite-autoconf-3420000,进入该目录进行sqlite3的编译和安装。

cd sqlite-autoconf-3420000 |
2.编译和安装
# (1)新建安装目录(根据自己习惯选择安装路径) |
提示:Successfully…即可,否则清除缓存后,重新编译
以上述方式安装后,会把编译好的二进制文件安装到/usr/local/sqlite3.42/lib, 把头文件sqlite3.h sqlite3ext.h安装到/usr/local/sqlite3.42/include,我们需要知道这两个路径。
(4)建立软连接(快捷方式)
cd /usr/bin # 切换到bin路径 |
注:其中/usr/local/sqlite3.42/bin/sqlite3为sqlite3的安装路径下的bin路径中的sqlite3,/usr/bin/sqlite3为固定位置
若显示

需要先删除该软连接,再新建
rm -rf sqlite3 # 删除 |
最终效果为

(5)配置系统lib库
echo "/usr/local/sqlite3.42/lib" > /etc/ld.so.conf.d/sqlite3.conf |
三、下载、编译和安装Python3
1.下载
下载方法和sqlite3的下载相似。本文安装的python3.8.12版本,官网地址为:https://www.python.org/ftp/python/3.8.12/
mkdir /home/tools/python3 # 新建下载存储路径 |
同样的,也可以在本地下载之后,通过ftp上传。
tar -zxvf Python-3.8.12.tgz # 解压 |
解压之后可以看到多了一个文件夹,直接切换过去

cd Python-3.8.12/ |
2.编译安装
(1)安装
编译安装之前建议在/usr/local路径下建立安装路径(根据自身习惯选择)
mkdir /usr/local/python3 |
原本python3的编译为下面的方法,但是,没有加参数的默认安装,python会自动导入原版本的sqlite3.7.17,
cd /home/tools/python/Python-3.8.12/ # 切换到解压后的路径 |
将上述代码修改为:
cd /home/tools/python/Python-3.8.12/ # 切换到解压后的路径 |
(2)建立软连接(快捷方式)
建立方法与sqlite3的软连接建立方式相同
ls -la python* # 查看python已存在的软连接 |
一般情况下,如果是新建立的系统,会存在以下三个软连接

以上软连接不做更改(因为很多系统命令会依赖python2.7),直接新建一个python3的软连接即可
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 |
最终效果
至此,sqlite3和python3已经安装并且连接好了,可进行如下验证

[root@iZf8z170cg4zcnds9u2p10Z bin]# python3 # 进入python3 |
可以看到,其中python版本为3.8.12,并且python3内的sqlite3版本为3.42.0,升级成功