本机环境:

默认安装的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

解压:

  1. tar -zxvf sqlite-autoconf-3170000.tar.gz
  2. cd sqlite-autoconf-3170000
  3. ./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"
  4. make && make install

以上过程中,我把sqlite安装到/data/sqlite3目录下了。根据个人情况修改

然后重新安装python3.7,原有目录不删除,直接覆盖安装。过程如下:

  1. [root@hadoop tmp]# tar -zxvf Python-3.7.6.tgz 
  2. [root@hadoop tmp]# cd Python-3.7.6
  3. [root@hadoop Python-3.7.6]# ls
  4. [root@hadoop Python-3.7.6]# export LD_RUN_PATH=/data/sqlite3/lib
  5. [root@hadoop Python-3.7.6]# ./configure --prefix=/data/python LDFLAGS="-L/data/sqlite3/lib" CPPFLAGS="-I /data/sqlite3/include"
  6. [root@hadoop Python-3.7.6]# make && make install

经过漫长的等待,会安装完成。

执行python

然后import sqlite3

如果没有错误,说明安装成功。

我的项目的目录结构如下图:

下一步在linux部署 Django+uwsgi+nginx,还有把部署资源服务的过程给大家分享。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐