Linux服务器部署Django项目中的sqlite之坑

因为项目比较小所以没有采用Mysql,用了自带的sqlite,结果盲信了“自带”没料到这条看似平坦的路坑却是不少,下面是此次的过坑之旅记录,希望能给同样境遇的提供一个参考。

配置环境:

Linux系统:Alibaba Cloud Linux 3.2104 LTS 64位

Python版本:Python3.10.1

Django版本:Django-4.2.3

坑1:ModuleNotFoundError: No module named '_sqlite3'

错误提示是没有找到sqlite3,Python路径下是存在sqlite3的

但是动态库文件里面没有_sqlite3。

因为服务器上存在多个版本的Python,所以用下面的命令找一下其他版本是否有对应的模块文件。

find / -name _sqlite*.so

结果输出了下面这些路径

用下面的命令把_sqlite3.cpython-36m-x86_64-linux-gnu.so复制到要用的版本的Python对应文件夹里面(红色部分需要根据实际情况修改)

 cp /www/server/pyporject_evn/Ericam_venv/lib/python3.10/lib-dynload/_sqlite3.cpython-310-x86_64-linux-gnu.so /usr/local/lib/python3.10/lib-dynload/_sqlite3.cpython-310-x86_64-linux-gnu.so

命令运行后没有反馈就是最好的结果

文件管理器可以看到复制成功

坑2:ModuleNotFoundError: No module named 'PIL'

用下面的命令安装PIL模块(红色部分需要根据实际情况修改)

/usr/local/bin/python3.10 pip install pillow

坑3:django.db.utils.NotSupportedError: SQLite 3.31 or later is required (found 3.26.0).

提示sqlite的版本太低,需要升级,尝试了很多方法都没有效果,最后依靠这个老哥的用pysqlite3替换掉sqlite3的办法解决了问题。https://www.cnblogs.com/shiyixirui/p/16723064.html

先用下面命令安装pysqlite3和pysqlite3-binary

/usr/local/bin/python3.10 pip install pysqlite3
/usr/local/bin/python3.10 pip install pysqlite3-binary

把sqlite3的base文件中的模块导入代码改成pysqlite3

vi /usr/local/lib/python3.10/site-packages/django/db/backends/sqlite3/base.py

把from sqlite3 import dbapi2 as Database的sqlite3改成下面pysqlite3,如下图

用下面的命令实现利用指定版本Python运行Django项目文件(红色部分需要根据实际情况修改)

 /usr/local/bin/python3.10 /usr/mysite/django-simpleblog-master/Ericam/manage.py runserver 0.0.0.0:8000

大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值