解决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
