2008-10-24 15 views
10

ich Python 2.6 auf Unix laufen und wenn ich die interaktive Aufforderung (SQLite soll sein vorinstalliert) erhalte ich:Kann nicht SQLite mit Python importieren 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 
>>> 

Wie kann ich dieses Problem lösen?

Antwort

14

Der Fehler:

ImportError: No module named _sqlite3 

bedeutet, dass SQLite 3 nicht die damit verbundene gemeinsam genutzten Bibliothek. Unter Mac OS X ist es _sqlite3.so und es sollte auf anderen Unix-Systemen dasselbe sein.

Um den Fehler zu beheben, müssen Sie die Bibliothek _sqlite3.so auf Ihrem Computer suchen und dann Ihren PYTHONPATH für diesen Speicherort überprüfen.

die Python-Suchpfad geben Sie in der Python-Shell drucken:

import sys 
print sys.path 

Wenn das Verzeichnis Ihrer Bibliothek enthält es interaktiv mit können Sie fehlt versuchen

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

und versuchen

import sqlite3 

wieder. Wenn dies funktioniert, müssen Sie dieses Verzeichnis permanent zu Ihrer Umgebungsvariablen PYTHONPATH hinzufügen.

PS: Wenn die Bibliothek fehlt, sollten Sie das Modul (neu) installieren.

10
import sqlite3 

sqlite3 - DB-API 2.0-Schnittstelle für SQLite Datenbanken.

Sie vermissen die .so (gemeinsames Objekt) - wahrscheinlich ein Installationsschritt. In meiner Linux-Python-Installation ist _sqlite3 an:

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

Versuchen Sie folgendes:

from pysqlite2 import dbapi2 as sqlite 
1

Auf meinem System _sqlite3.so sich unter:

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

Überprüfen Sie, ob das Verzeichnis in Ihr sys.path:

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

Python 2.6 erkennt, wo die sqlite3 Entwicklungsheader sind installiert und überspringen im Hintergrund b Erstellen Sie _sqlite3, wenn es nicht verfügbar ist. Wenn Sie aus der Quelle erstellen, installieren Sie sqlite3 einschließlich Entwicklungsheadern. In meinem Fall, sudo yum install sqlite-devel sortiert dies auf einem CentOS 4.7. Erstellen Sie dann Python aus dem Quellcode neu.

+0

make install machen bitte klären was "Python aus Quellcode neu aufbauen" bedeutet. Vielen Dank –

0

Behebt das dein Problem?

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

Die 2.5.5. Mac-Port von Python 2.5 hat jetzt diesen Hinweis:

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

Und so ein Upgrade des Python25 Port python25 @2.5.5_0 wieder den Import Arbeit gemacht. Da sqlite3 zu den Abhängigkeiten von python25 gehört, wird bei der Aktualisierung von python25 neu erstellt. So ,

$ sudo port upgrade python25 

funktioniert der Trick auf Mac OS X, Ports-Sammlung.

0

Ich habe das gleiche Problem. Schritte zu lösen.

  1. Laden Sie neueste sqlite3 von sqlite Website. SQLite-autoconf *
  2. dass in 3 einfachen Schritten installieren
    1. configure
    2. machen
    3. make install
  3. die Python Rebuild
Verwandte Themen