Logo Python

Erreur import sqlite avec Python 3

Python


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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.