解决Linux下多版本python 启动Django连接sqlite3报错,分享Linux解决Django使用sqlite问题
本机环境:
默认安装的python2.6 ,在/usr/lib/python2.6
手工安装python3.7 在/data/python
项目框架:
Django2.2+Python3.7,+sqlite
有同学会问,为啥用sqlite,不用mysql,我只是搭建了一个很小的服务,没必要用mysql了,模型中就一张表,三个字段。
今天把windows下开发好的Django项目部署到Linux,最简单的项目。一个项目、一个app,为什么要创建app呢,因为如果要是用Django的模型,必须创建app,在Linux部署启动的时候报错了:
module does not define module export function (PyInit__sqlite3
原因就是没有没有sqlite3的库文件,然后把python2下面的库文件
解决步骤
cp /usr/lib/python2.6/lib-dynload/_sqlite3.so /data/python/lib/python3.7/lib-dynload/_sqlite3.so
复制过去之后,依然没有解决问题,后来结合网上的资料解决了,我的解决过程如下:
继续深挖
下载安装介质:
wget https://www.sqlite.org/2017/sqlite-autoconf-3170000.tar.gz --no-check-certificate
解压:
- tar -zxvf sqlite-autoconf-3170000.tar.gz
- cd sqlite-autoconf-3170000
- ./configure --prefix=/data/sqlite3 --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1"
- make && make install
以上过程中,我把sqlite安装到/data/sqlite3目录下了。根据个人情况修改
然后重新安装python3.7,原有目录不删除,直接覆盖安装。过程如下:
- [[email protected] tmp]# tar -zxvf Python-3.7.6.tgz
- [[email protected] tmp]# cd Python-3.7.6
- [[email protected] Python-3.7.6]# ls
- [[email protected] Python-3.7.6]# export LD_RUN_PATH=/data/sqlite3/lib
- [[email protected] Python-3.7.6]# ./configure --prefix=/data/python LDFLAGS="-L/data/sqlite3/lib" CPPFLAGS="-I /data/sqlite3/include"
- [[email protected] Python-3.7.6]# make && make install
经过漫长的等待,会安装完成。
执行python
然后import sqlite3
如果没有错误,说明安装成功。
我的项目的目录结构如下图:
下一步在linux部署 Django+uwsgi+nginx,还有把部署资源服务的过程给大家分享。