解决django中sqlite版本低

为什么要写这篇文章,因为我参考网上的方法没有解决了这个问题 后来在一篇文章中受到启发,但它写得过于简陋

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

运行提示sqlite3版本低,先查看下

sqlite3 -version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
python3 
>>> import sqlite3
>>> sqlite3.sqlite_version
3.7.17
>>> exit()

到此没有什么问题,但先不急于安装sqlite3 你有没有想过,tar包安装的是可执行程序,C语言写的,python3怎么import C语言的包? 所以,我们先查看一下这个sqlite3包的位置

python3
>>> import inspect
>>> import sqlite3
>>> print(inspect.getsourcefile(sqlite3))
/usr/local/python3/lib/python3.9/sqlite3/__init__.py

包在这里,python3调用的是这个包 只要把这个包替换成高级版本的就可以了 但是怎么替换? 我想到的方法重新安装编译 在安装python3的时候,在make的过程中,sqlite3是他的一个可选包 如果有sqlite3的库文件,那么python3就会把库文件加入到编译过程 这个库文件是libsqlite3.so.0.8.6 如果python3在安装时,先找到3.7版本的sqlite3的库文件 那么编译安装后,你得到的还是3.7版本的sqlite3 所以,为了防止python3在编译时找到3.7版本的sqlite3,我们先卸了低版本sqlite3库文件 yum remote sqlite-devel 这个sqlite-devel是什么?

    sqlite就是sqlite3这个应用,是可以执行的 devel指开发环境包,不可以执行,但可以给其他的包提供sqlite3的库文件 所以,我们正确的操作应该是先删除旧的sqlite3库 再安装并指定新的sqlite3库
yum remove sqlite-devel
wget http: //www.sqlite.org/sqlite-autoconf-3360000.tar.gz
tar -zxf sqlite-autoconf-3360000.tar.gz
cd sqlite-autoconf-3360000
./configure --prefix=/usr/local/sqlite3
make
make install
libtool --finish /usr/local/sqlite3/lib

以上执行完后,如果不放心,可以

export LD_LIBRARY_PATH="/usr/local/sqlite3/lib"

然后我们重新编译安装python3

cd /opt/install/python3.9
./configure --prefix=/usr/local/python3
make
make install

再试

python3
>>> import sqlite3
>>> sqlite3.sqlite_version
3.36.0
经验分享 程序员 微信小程序 职场和发展