解决Python3 No module named '_sqlite3'错误
转载自:https://www.jianshu.com/p/dd4532457b9f
=======
原文地址
升级完python3以及新安装django后运行 django项目的时候出现 No module named '_sqlite3' 错误:

出现此问题: 我们进入python环境
>>import sys
>>sys.path
命令结果如下 :
完成退出 python环境
执行以下命令:
[root@localhost lib-dynload]# find / -name _sqlite3.so
发现在/usr/local/python3/lib/python3.6/lib-dynload/这个路径下没找到_sqlite3.so
但是在/usr/lib64/python2.7/lib-dynload/_sqlite3.so是有这个的; 记住千万不要把python2.7下的_sqlite3.so复制到python3下;是用不了的;
接下来我们开始安装sqlite3:
执行以下命令:
[root@localhost lib-dynload]# find / -name _sqlite3.so
发现在/usr/local/python3/lib/python3.6/lib-dynload/这个路径下没找到_sqlite3.so
但是在/usr/lib64/python2.7/lib-dynload/_sqlite3.so是有这个的; 记住千万不要把python2.7下的_sqlite3.so复制到python3下;是用不了的;
接下来我们开始安装sqlite3:
- 下载安装包:wget https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz
- 解压:tar -xvzf sqlite-autoconf-3240000.tar.gz
- 进入目录:cd sqlite-autoconf-3240000/
- 编译:./configure --prefix=/usr/local/sqlite
- 安装 :make -j4&&sudo make install
安装成功后如下:
此时我们进行重新安装python3
进入python3安装目录 :
[root@localhost sqlite-autoconf-3240000]# cd ../Python-3.6.5/
修改setup.py
[root@localhost Python-3.6.5]# vi setup.py
查找" sqlite_inc_paths" 新增
'/usr/local/sqlite/include'
'/usr/local/sqlite/include/sqlite3'
完成后如下:
保存退出;
执行命令:
[root@localhost Python-3.6.5]# ./configure --enable-loadable-sqlite-extensions
[root@localhost Python-3.6.5]# make && sudo make install
安装完执行以下命令查看_sqlite3.so情况
[root@localhost Python-3.6.5]# find / -name _sqlite*.so
发现python3 多了
/root/Python-3.6.5/build/lib.linux-x86_64-3.6/_sqlite3.cpython-36m-x86_64-linux-gnu.so
/usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so
接下来我们在执行:
cp /usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.6/lib-dynload/_sqlite3.so
再次进入python环境
执行命令import sqlite3已经可以正常了
ok问题解决!
进入python3安装目录 :
[root@localhost sqlite-autoconf-3240000]# cd ../Python-3.6.5/
修改setup.py
[root@localhost Python-3.6.5]# vi setup.py
查找" sqlite_inc_paths" 新增
'/usr/local/sqlite/include'
'/usr/local/sqlite/include/sqlite3'
完成后如下:

执行命令:
[root@localhost Python-3.6.5]# ./configure --enable-loadable-sqlite-extensions
[root@localhost Python-3.6.5]# make && sudo make install
安装完执行以下命令查看_sqlite3.so情况
[root@localhost Python-3.6.5]# find / -name _sqlite*.so

/root/Python-3.6.5/build/lib.linux-x86_64-3.6/_sqlite3.cpython-36m-x86_64-linux-gnu.so
/usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so
接下来我们在执行:
cp /usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.6/lib-dynload/_sqlite3.so
再次进入python环境
执行命令import sqlite3已经可以正常了

作者:风筝flying
链接:https://www.jianshu.com/p/dd4532457b9f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示