django(二)centos安装django3.2报错SQLite 3.8.3 or later is required (found 3.7.17)

简介: 我正在参加「掘金·启航计划」Centos安装diango3.2框架请参照《django(一)ubuntu18.04安装框架》在运行:复制代码python3 manage.py runserver 0.0.0.0:81的时候报错:swift复制代码django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).报错的大体意思是:对sqlite最低版本的需求的3.8.3,但是现在只找到了3.7.17。

我正在参加「掘金·启航计划」

Centos安装diango3.2框架请参照《django(一)ubuntu18.04安装框架

在运行:

复制代码

python3 manage.py runserver 0.0.0.0:81

的时候报错:

swift

复制代码

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

报错的大体意思是:对sqlite最低版本的需求的3.8.3,但是现在只找到了3.7.17。

百度了一下,关于这个错误大概有两种解决方式:

1 :给django降级(不现实)

卸载django:  

复制代码

pip uninstall django

安装低版本:  

ini

复制代码

pip install django==2.1.8

但是吧,这种方法显然是不行的。

2 :升级服务器的sqlite3的版本(不好用)

这种方法我尝试之后,不好用,服务器本身的sqlite是更新了,但是python3的sqlite版本并没有更新。重启服务器也没有用。

尝试记录如下:

perl

复制代码

#更新SQLite 3
#获取源代码(在主目录中运行)
[root@djangoServer ~]# cd ~
[root@djangoServer ~]# wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
[root@djangoServer ~]# tar -zxvf sqlite-autoconf-3270200.tar.gz
#构建并安装
[root@djangoServer ~]# cd sqlite-autoconf-3270200
[root@djangoServer sqlite-autoconf-3270200]# ./configure --prefix=/usr/local
[root@djangoServer sqlite-autoconf-3270200]# make && make install
[root@djangoServer sqlite-autoconf-3270200]# find /usr/ -name sqlite3
/usr/bin/sqlite3
/usr/lib64/python2.7/sqlite3
/usr/local/bin/sqlite3
/usr/local/python3/lib/python3.7/site-packages/django/db/backends/sqlite3
/usr/local/python3/lib/python3.7/sqlite3
[root@djangoServer sqlite-autoconf-3270200]#
#不必要的文件,目录删除
[root@djangoServer sqlite-autoconf-3270200]# cd ~
[root@djangoServer ~]# ls
anaconda-ks.cfg  sqlite-autoconf-3270200  sqlite-autoconf-3270200.tar.gz
[root@djangoServer ~]#
[root@djangoServer ~]# rm -rf sqlite-autoconf-3270200.tar.gz
[root@djangoServer ~]# rm -rf sqlite-autoconf-3270200
#检查版本
## 最新安装的sqlite3版本
[root@djangoServer ~]# /usr/local/bin/sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
[root@djangoServer ~]#
## Centos7自带的sqlite3版本
[root@djangoServer ~]# /usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
[root@djangoServer ~]#
## 可以看到sqlite3的版本还是旧版本,那么需要更新一下。
[root@djangoServer ~]# sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
[root@djangoServer ~]#
## 更改旧的sqlite3
[root@djangoServer ~]# mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
## 软链接将新的sqlite3设置到/usr/bin目录下
[root@djangoServer ~]# ln -s /usr/local/bin/sqlite3   /usr/bin/sqlite3
## 查看当前全局sqlite3的版本
[root@djangoServer ~]# sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
[root@djangoServer ~]#
#将路径传递给共享库
# 设置开机自启动执行,可以将下面的export语句写入 ~/.bashrc 文件中,如果如果你想立即生效,可以执行source 〜/.bashrc 将在每次启动终端时执行
[root@djangoServer ~]# export LD_LIBRARY_PATH="/usr/local/lib"
#检查Python的SQLite3版本
[root@djangoServer ~]# ipython3
Python 3.7.1 (default, May  3 2019, 09:55:04)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import sqlite3                                                    
In [2]: sqlite3.sqlite_version                                            
Out[2]: '3.27.2'
In [3]: exit                                                              
[root@djangoServer ~]#
#启动开发服务器
[root@djangoServer ~]# cd /work/
[root@djangoServer work]# ls
db.sqlite3  manage.py  polls  test_django
[root@djangoServer work]# python3 manage.py runserver

 

3 :更改python源代码(我使用的方法,这个方法可以用,但是下边的方法我觉得更好)

执行

复制代码

python3 manage.py runserver 0.0.0.0:81

报错之后,我们执行查找sqlite3相关目录的命令:

bash

复制代码

find /usr/ -name sqlite3
^C[root@iZuf60ynur81p6k0ysvtneZ helloworld]find /usr/ -name sqlite3
/usr/bin/sqlite3
/usr/lib64/python2.7/sqlite3
/usr/lib64/python3.6/sqlite3
/usr/local/aegis/PythonLoader/lib/python2.7/sqlite3
/usr/local/lib/python3.6/site-packages/Django-3.2-py3.6.egg/django/db/backends/sqlite3
/usr/local/download/php-7.4.11/ext/sqlite3
/usr/local/download/django-master/django/db/backends/sqlite3
/usr/local/download/django-master/build/lib/django/db/backends/sqlite3

 

Django框架的sqlite源文件的目录是:

bash

复制代码

/usr/local/lib/python3.6/site-packages/Django-3.2-py3.6.egg/django/db/backends/sqlite3

image.png

更改当前目录下的base.py文件

ruby

复制代码

def check_sqlite_version():
    if Database.sqlite_version_info < (3, 6, 3):
        raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)

将原本的3.8.3版本号改成上方的3.6.3即可。当然,前提是你的项目不使用sqlite,否则大概率可能会出问题。

再次运行:

复制代码

python3 manage.py runserver 0.0.0.0:81

访问浏览器,查看是否成功。

4:使用pysqlite3替代系统的sqlite(我使用的方法)

如果上边的方法不好用,那就不依赖系统提供的sqlite3,使用 pysqlite3 和 pysqlite3-binary 库来操作。首先需要安装这两个库

php

复制代码

pip3 install pysqlite3
pip3 install pysqlite3-binary

查找当前服务器python 安装路径:

复制代码

whereis python

输出:

bash

复制代码

python: /usr/bin/python3.6-config /usr/bin/python2.7 /usr/bin/python3.6m-config /usr/bin/python3.6m-x86_64-config /usr/bin/python3.6m /usr/bin/python3.6 /usr/bin/python /usr/lib/python2.7 /usr/lib/python3.6 /usr/lib64/python2.7 /usr/lib64/python3.6 /etc/python /usr/local/lib/python3.6 /usr/include/python2.7 /usr/include/python3.6m /usr/share/man/man1/python.1.gz

这一堆路径,慢慢找。

修改db代码导入库

bash

复制代码

vi /usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py
# 修改内容
# from sqlite3 import dbapi2 as Database (注释掉这段)
from pysqlite3 import dbapi2 as Database # 启用pysqlite3
# :wq 保存即可

再次运行:

复制代码

python3 manage.py runserver 0.0.0.0:81

框架运行成功。

有好的建议,请在下方输入你的评论。

目录
相关文章
|
6天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
7天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
30天前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
67 1
Linux系统之Centos7安装cockpit图形管理界面
|
14天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
49 3
|
15天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
30 2
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
21天前
|
Linux 知识图谱
Centos7安装killall,fuser, killall,pstree和pstree.x11
通过上述步骤,您已在CentOS 7系统中成功部署了killall、fuser、pstree以及pstree.x11,为高效管理系统进程打下了坚实基础。更多关于服务器管理与优化的知识,获取全面技术支持与解决方案。
27 1
|
21天前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
45 1
|
3天前
|
存储 安全 Linux
VMware安装CentOS7
【11月更文挑战第11天】本文详细介绍了在 VMware 中安装 CentOS 7 的步骤,包括准备工作、创建虚拟机、配置虚拟机硬件和安装 CentOS 7。具体步骤涵盖下载 CentOS 7 镜像文件、安装 VMware 软件、创建和配置虚拟机硬件、启动虚拟机并进行安装设置,最终完成 CentOS 7 的安装。在安装过程中,需注意合理设置磁盘分区、软件选择和网络配置,以确保系统的性能和功能满足需求。
|
1月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
227 3