安装好的python3.5,import sqlite3 遇到报错:‘ImportError: No module named '_sqlite3'’
尝试了网上诸多解决方法,均没有成功,这些失败的方法包括
(1)无效方法1
step1,yum install sqlite-devel
step2,进入python35安装文件夹,例如我的路径是/usr/local/src/Python3.5.3
cd /usr/local/src/Python3.5.3
step3,重新编译安装
./configure
make && make install
step4,上述行不通,找到python35安装文件,进入,vi setup.py 修改sqlite_inc_paths,.....(百度。。。)
(2)无效方法2
yum install sqlite3-devel
找不到该包
(3) 无效方法3
step1,Linux命令行输入:find / -name _sqlite3.so,得到里类似/usr/lib/python2.6/lib-dynload/_sqlite3.so结果
step2,进入python环境,import sys 然后 sys.path,得到类似/usr/local/lib/python2.7/lib-dynload/
step3,复制,linux命令行输入cp /usr/lib/python2.6/lib-dynload/_sqlite3.so /usr/local/lib/python2.7/lib-dynload/
结果依然不行
--------------------------------------------------------------------------------
正确合理的做法如下:
(1)下载sqlite-autoconf-3230100.tar.gz,下载连接http://www.sqlite.org/2018/sqlite-autoconf-3230100.tar.gz
(2)tar xzf sqlite-autoconf-3230100.tar.gz
(3)我的路径是/root/sqlite-autoconf-3230100
cd /root/sqlite-autoconf-3230100
编译安装
./configure
make && make install
(4)在liunx命令行输入sqlite3,得到如下结果:
[root@YeMa sqlite-autoconf-3230100]# sqlite3
SQLite version 3.23.1 2018-04-10 17:39:29
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
说明sqlite3编译安装成功,输入.quit退出sqlite3
(5)重新编译python35,才能识别sqlite3
找到Python35安装文件,如果忘记路安装路径,不要着急
a,回到根目录, cd ~/
b,find -name Python-3.5.3
我的输出结果是:
./usr/local/src/Python-3.5.3
./usr/local/src/Python-3.5.3/build/temp.linux-x86_64-3.5/usr/local/src/Python-3.5.3
安装路径为:/usr/local/src/Python-3.5.3
找到安装路径后,进入
cd /usr/local/src/Python-3.5.3
重新编译,安装,这里特别注意,红色部分
./configure --prefix=/usr/local/python3.5
make && make install
如何确定你的红色部分应该填什么呢?
python35安装文件位置/usr/local/src
cd /usr/local
例如我的结果得到:
bin etc games include lib lib64 libexec python3.5 sbin share src
编译安装成功后,进入python环境,输入import sqlite3,正常无报错即可
PS: 我中间倒腾的时候,修改了python3.5安装文件下setup.py,增加了红色圈中两行,没有验证是否起作用
如果以上方案行不通,试着修改setup.py