No module named ‘_sqlite3‘ --------Centos解决python版本冲突
同时安装Python2和3导致导包sqlite3异常No module named '_sqlite3'
# 工作记录
背景:学习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下载及安装
---参考2(未解决)
Linux服务器部署Django项目中的sqlite之坑_django.db.utils.notsupportederror: sqlite 3.31 or -CSDN博客
-----参考3(未解决)
解决Python3 No module named '_sqlite3'错误 - larybird - 博客园
----解决4(未解决,应该是有效的,可能缺少配置文件这一步)
更多推荐
所有评论(0)