Erreur import sqlite avec Python 3
Dans l’article précédent, je t’expliquais comment compiler la dernière version de Python. Aujourd’hui, je vais te parler d’une erreur d’importation sur sqlite3
sous Python 3.4.3 qui est en lien avec cette compilation.
Description du problème
Python intègre, depuis la version 2.5, la bibliothèque de connexion à une base de donnée sqlite, la lib sqlite3. Sur la version Python 3.4.3 que j’ai compilé, l’import de sqlite3 renvoyait l’erreur suivante :
$ python3.4 -c "import sqlite3;print(sqlite3.version)" Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.4/sqlite3/__init__.py", line 23, in from sqlite3.dbapi2 import * File "/usr/local/lib/python3.4/sqlite3/dbapi2.py", line 27, in from _sqlite3 import * ImportError: No module named '_sqlite3'
L’interpréteur nous informe ne pas avoir trouvé la lib _sqlite3
. Cette lib devrait se trouver dans /usr/local/lib/python3.4/lib-dynload
. La commande suivante nous permet de le vérifier :
$ ls /usr/local/lib/python3.4/lib-dynload/ | grep sqlite
Comme nous pouvons le voir, la bibliothèque n’est pas présente. Pour résoudre cette erreur, vous allez devoir installer le paquet libsqlite3-dev
avant de recompiler Python. Pour ce faire, je vous laisse retourner à l’article Installer Python depuis les sources
Vérifions maintenant la bonne résolution
Deux choses pour vérifier que votre installation comporte bien le support de sqlite. Nous vérifions d’abord la présence de la lib dans /usr/local/lib/python3.4/lib-dynload
:
$ ls /usr/local/lib/python3.4/lib-dynload/ | grep sqlite _sqlite3.cpython-34m.so
Si la lib est présente, nous ne devrions plus avoir de soucis pour faire l’import dans l’interpréteur.
$ python3.4 -c "import sqlite3;print(sqlite3.version)"
Vous avez maintenant un Python 3.4.3 avec le support de sqlite opérationnel. Si vous avez des remarques, suggestions ou autres les commentaires sont là pour ça.
/usr/local/lib doit être remplacé par le chemin d’installation que vous avez définie lors de la compilation.
Source : http://bugs.python.org/issue21950