No module named '_sqlite3
SQLite is a C library that implements an SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process.
1.sqlite3
is built into Python’s standard library (sqlite3 — DB-API 2.0 interface for SQLite databases — Python 3.11.4 documentation), you should not try to install it using pip.
If you had used the standard version of Python you would not have this problem.The standard Python version is 3.9.2
2.If import sqlite3
does not work either, it means you’ve compiled Python without SQLite support, and you need to build it again after installing the libsqlite3-dev package.
python3
root@raspberrypi:~# python3
>>> import sys
>>> sys.path
['', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages']
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.10/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/usr/local/lib/python3.10/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
>>>
Solution
- Install SQL Lite by:
sudo systemctl stop [email protected]
wget https://sqlite.org/2021/sqlite-autoconf-3360000.tar.gz
tar -xvf sqlite-autoconf-3360000.tar.gz
./configure
make
sudo make install
2 . Install Python-3.10.9 by:
root@raspberrypi:# cd Python-3.10.9
edit setup.py
root@raspberrypi:~/Python-3.10.9# vi setup.py
old
def detect_sqlite(self):
# The sqlite interface
sqlite_setup_debug = False # verbose debug prints from this script?
# We hunt for #define SQLITE_VERSION "n.n.n"
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
find " sqlite_inc_paths" add
'/usr/local/sqlite/include'
'/usr/local/sqlite/include/sqlite3'
as follow:
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
'/usr/local/sqlite/include',
'/usr/local/sqlite/include/sqlite3',
]
save & exit
upgrade Python as follow:
root@raspberrypi:~/Python-3.10.9# ./configure --enable-loadable-sqlite-extensions
root@raspberrypi:~/Python-3.10.9# make -j 4
root@raspberrypi:~/Python-3.10.9# sudo make install
checklist
python3
>>> import sys
>>> sys.path
['', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages']
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.10/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/usr/local/lib/python3.10/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
>>> import sqlite3
ok
useful links