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
发布了130 篇原创文章 · 获赞 105 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/THMAIL/article/details/104081254