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

背景

  1. 博主需要用uwsgi,uwsgi需要Python的头文件;
  2. 发行版python不包含头文件,于是安装开发版python3-devel;
  3. yum 安装的python3-devel是3.6.8的,跑最新的django时就会报错,django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

调研

要用uwsgi就要python3-dev,而在python3-dev下跑最新的django就会因为centos自带的sqlite3版本低报错;

解决

方法1. 自己编译python-dev,再安装uwsgi,跑起来,没试;

方法2. 升级linux的sqlite3(推荐)
详细操作步骤:(其中{}表示变量)
1. 执行rpm -q sqlite查看自己的包名;
2. 执行rpm -e --nodeps {包名}移除sqlite包,记得替换成自己的包名,不用{};
3. 执行wget https://www.sqlite.org/2020/sqlite-autoconf-3310000.tar.gz下载最新的sqlite3源码,上面的地址自己去sqlite官网找到,替换成最新的即可;
4. 解压tar -zxvf sqlite-autoconf-3310000.tar.gz,文件名记得替换成自己的;
5. 切换目录cd sqlite-autoconf-3310000
6. ./configure --prefix=/usr
7. make && make install
8. echo "include /usr/lib" >> /etc/ld.so.conf
9. ldconfig
注意:其中8,9两步是可选执行,因为博主在执行完1-7后,使用python import sqlite3出现ImportError: libsqlite3.so.0 not found,因此需要执行8,9步把路径添加进去,大家没问题的可以不执行
10. 执行sqlite3 -version,发现sqlite3已经最新了;
11. 记得清理wget 下载的文件和解压问价;

方法3. 降低django版本(反面教材,线上环境不建议)

方法4. 如果你用不到sqlite,则直接在settings.py里把
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }删了就好了或者配置mysql等

参考:

  • https://cloud.tencent.com/developer/article/1439327
  • http://www.jyguagua.com/?p=3467
  • https://stackoverflow.com/questions/45406361/importerror-libta-lib-so-0-cannot-open-shared-object-file-no-such-file-or-dir
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

THMAIL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值