2008-10-24 6 views
10

Je suis en Python 2.6 sur Unix et quand je lance l'invite interactive (SQLite est censé être pré-installé) je reçois:ne peut pas importer SQLite avec Python 2.6

[[email protected] htdocs]# python 
Python 2.6 (r26:66714, Oct 23 2008, 16:25:34) 
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named sqlite 
>>> 

Comment puis-je résoudre ce problème?

Répondre

14

L'erreur:

ImportError: No module named _sqlite3 

signifie que SQLite 3 ne trouve pas la bibliothèque partagée associée. Sur Mac OS X c'est _sqlite3.so et il devrait en être de même sur les autres systèmes Unix.

Pour résoudre l'erreur que vous devez localiser la bibliothèque _sqlite3.so sur votre ordinateur, puis vérifiez votre PYTHONPATH pour cet emplacement de répertoire.

Pour imprimer le chemin de recherche Python entrez la commande suivante dans le shell Python:

import sys 
print sys.path 

Si le répertoire contenant votre bibliothèque est manquant, vous pouvez essayer d'ajouter de manière interactive avec

sys.path.append('/your/dir/here') 

et essayer

import sqlite3 
nouveau

. Si cela fonctionne, vous devez ajouter ce répertoire en permanence à votre variable d'environnement PYTHONPATH. PS: Si la bibliothèque est manquante, vous devez (ré) installer le module.

10
import sqlite3 

sqlite3 - Interface DB-API 2.0 pour les bases de données SQLite.

Il vous manque le .so (objet partagé) - probablement une étape d'installation. Dans mon installation de Linux python, _sqlite3 est à:

${somewhere}/lib/python2.6/lib-dynload/_sqlite3.so 
1

Essayez ceci:

from pysqlite2 import dbapi2 as sqlite 
1

Sur mon système _sqlite3.so situé à:

'/usr/lib/python2.6/lib-dynload/_sqlite3.so' 

Vérifiez que le répertoire est dans votre sys.path:

>>> import sys; print(filter(lambda p: 'lib-dynload' in p, sys.path)) 
['/usr/lib/python2.6/lib-dynload'] 
10

Python 2.6 détecte où le sqlite3 les en-têtes de développement sont installés et ignoreront b éditer _sqlite3 si ce n'est pas disponible. Si vous construisez à partir de la source, installez sqlite3 y compris les en-têtes de développement. Dans mon cas, sudo yum install sqlite-devel a trié cela sur un CentOS 4.7. Ensuite, reconstruisez Python à partir du code source.

+0

s'il vous plaît préciser ce que signifie «reconstruire Python à partir du code source». Merci –

0

Est-ce que résoudre votre problème?

Python 2.5.4 (r254:67916, May 31 2009, 16:56:01) 
[GCC 4.3.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named sqlite 
>>> import sqlite3 
>>> 
0

Le 2.5.5. Port Mac de Python 2.5 a maintenant cette astuce:

"py25-sqlite3 @2.5.4 (python, databases) 
    This is a stub. sqlite3 is now built with python25" 

Et une mise à niveau du port de Python25 à python25 @2.5.5_0 fait à nouveau le travail d'importation. Depuis sqlite3 est parmi les dépendances de python25, il est construit à nouveau lors de la mise à niveau de python25. Ainsi,

$ sudo port upgrade python25 

le tour est joué sur Mac OS X, collection de ports.

0

Je suis confronté au même problème. Étapes à résoudre.

  1. Télécharger la dernière sqlite3 du site Web sqlite. sqlite-autoconf *
  2. INSTALL_LIC en 3 étapes simples
    1. ./configure
    2. faire
    3. make install
  3. le python Reconstruire faire make install
Questions connexes