# 工作记录

背景:学习Django部署到服务器过程中,本机安装了Centos,然后安装了python3,旧的python2未卸载,运行Django项目时提示No module named '_sqlite3' 异常,进入python环境,直接import同样异常,但是这是Python3自带的包,并且在相应的目录下也存在,控制台直接输入sqlite3也能正常进入数据库,使用Python2 环境可以导包成功,网上查找应该是同时安装了Python2和3的冲突

解决方法:

1、输入以下命令查看当前系统中sqlite3

find / -name _sqlite3*.so

如果有异常的应该是如下图只有Python2的(我这个是修改后可以使用的,所以会有Python3的)

 不要把Python2的直接复制到Python3对应的路径下!!!

2、下载sqlite3包并安装

下载地址:SQLite Download Page  

解压:tar -zxvf sqlitexxx.tar.gz

 进入解压后目录:cd sqlitexxx

编译并安装到指定目录:./configure --prefix=/usr/local/sqlite3.45 && make && make install

安装完成页面,注意提示信息

 3、sqlite3库的路径进入到配置文件中

进入配置目录
cd /etc/ld.so.conf.d/
创建配置文件
touch sqlite3.conf
sqlite3安装路径写入配置
echo "/usr/local/sqlite3.45/lib" > sqlite3.conf
更新
ldconfig -v

4、重新编辑Python

到Python的安装路径,一般在/usr/bin/Pythonx路径下,或者在Python环境中查看

# 查看Python环境
import sys
sys.path
# 重新编译
cd /usr/bin/python-3.9.9
./configure --prefix=/usr/local/python3.8  --with-openssl=/usr/local/openssl1.1 LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include"

5、重复第一步,查看sqlite3,可以看到有Python3 对应的sqlite3了,但是此时import sqlite3仍有异常提示,将两个xxx-gnu_failed.so删除打算再来一次,但是忽然发现可以用了。。。。

6、正常的应该是xxx-gnu.so,有的无法使用是因为缺这个文件,但我这里不知道为什么都是failed;网上有很多方法,最简单的就是重新下载sqlite,重新编译Python,但是都没有成功,最后这个也不知道是因为加了配置文件,还是把失败的俩文件删除了。。。 

 参考链接:

Linux入门攻坚——14、实战软件安装-搭建Python3.8环境-2_linux 安装python3.8.2-CSDN博客

                                                                                   ---------参考一(有效,但是gnu.so未生效)

Linux 下Sqlite3 的下载及安装_linux编译sqlite3.3下载-CSDN博客                    -sqlite3下载及安装

处理:ModuleNotFoundError: No module named '_sqlite3'_modulenotfounderror: no module named 'sqlite3-CSDN博客

                                                                                                                       ---参考2(未解决)

Linux服务器部署Django项目中的sqlite之坑_django.db.utils.notsupportederror: sqlite 3.31 or -CSDN博客

-----参考3(未解决)

解决Python3 No module named '_sqlite3'错误 - larybird - 博客园

                                                    ----解决4(未解决,应该是有效的,可能缺少配置文件这一步)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐