Kein Modul namens _sqlite3


135

Ich versuche, eine Django- App auf meinem VPS unter Debian 5 auszuführen. Wenn ich eine Demo-App ausführe, wird der folgende Fehler angezeigt:

  File "/usr/local/lib/python2.5/site-packages/django/utils/importlib.py", line 35, in     import_module
    __import__(name)

  File "/usr/local/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 30, in <module>
    raise ImproperlyConfigured, "Error loading %s: %s" % (module, exc)

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that     order): No module named _sqlite3

Bei der Python-Installation wird der gleiche Fehler angezeigt:

Python 2.5.2 (r252:60911, May 12 2009, 07:46:31) 
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3
>>>

Wenn ich im Web lese, erfahre ich, dass Python 2.5 mit allen erforderlichen SQLite- Wrappern geliefert werden sollte. Muss ich Python neu installieren oder gibt es eine andere Möglichkeit, dieses Modul zum Laufen zu bringen?


1
Das gleiche Problem ist für kompilierte Python 3.5.5 aus der Quelle
Alex-Bogdanov

Antworten:


133

Es scheint, dass Ihr Makefile nicht die entsprechende .soDatei enthielt . Sie können dieses Problem mit den folgenden Schritten beheben:

  1. Installieren sqlite-devel(oder libsqlite3-devauf einigen Debian-basierten Systemen)
  2. Python neu konfigurieren und neu kompilieren mit ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Hinweis

In diesem sudo make installTeil wird diese Python-Version als systemweiter Standard festgelegt, was unvorhergesehene Folgen haben kann. Wenn Sie diesen Befehl auf Ihrer Workstation ausführen, möchten Sie ihn wahrscheinlich neben dem vorhandenen Python installieren , was mit möglich ist sudo make altinstall.


Danke jammyWolf. Ich glaube nicht, dass ich die Datei nach dem ersten Ausführen von configure "verloren" habe, sondern dass das Ausführen von configure mit bereits installiertem sqlite-devel all diesen Unterschied gemacht hat.
Jeff Taylor

Die Konfiguration hat mich "./configure --enable-loadable-sqlite-extensions"
ybdesire

4
Wie kann ich installieren sqlite-devel? Ich bin auf einem angepassten Linux system.I gerade heruntergeladen sqlite-autoconf-3100200.tar.gzund ausgeführt ./configure, make && make install. Nachdem ich python3 neu kompiliert habe, funktioniert es immer noch nicht.
AntiMoron

2
Wenn Sie dies lesen, müssen Sie die Konfigurationsoption in der Antwort hinzufügen. Das hat mich auch gerettet. Andernfalls spielt es keine Rolle, dass Sie libsqlite3-dev installiert haben.
Ticster

3
Wie überprüfe ich, wo sich das Konfigurationsskript befindet?
Jenna Kwon

80

Ich hatte das gleiche Problem (Gebäude python2.5aus dem Quellcode auf Ubuntu Lucid) und import sqlite3warf die gleiche Ausnahme. Ich habe libsqlite3-devüber den Paketmanager installiert , Python2.5 neu kompiliert und dann hat der Import funktioniert.


6
Genau! Sie müssen nicht manuell mit Binärdateien und Umgebung bearbeiten. In meinem Fall hatte ich Python 2.7 bereits aus dem Quellcode erstellt. Um die Kompilierung zu minimieren, habe ich apt-get install libsqlite3-dev ausgeführt. ./konfigurieren; libinstall machen; geteilte Installation machen;
Oxfn


22

Das habe ich getan, damit es funktioniert.

Ich verwende Pythonbrew (das Pip verwendet) mit installiertem Python 2.7.5.

Ich habe zuerst das getan, was Zubair (oben) gesagt hat, und diesen Befehl ausgeführt:

sudo apt-get install libsqlite3-dev

Dann habe ich diesen Befehl ausgeführt:

pip install pysqlite

Dies hat das Datenbankproblem behoben und ich habe eine Bestätigung erhalten, als ich ausgeführt habe:

python manager.py syncdb

2
in Centos 6.5 laufen yum install sqlite-develstatt der ersten Zeile.
Ehsan88

3
Das ist gut für Python 2, aber pysqlitejetzt sqlite3in Python 3, und das können Sie nicht pip -m install.
Clabe45

5
pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library
Stephen

19
  1. Installieren Sie das sqlite-develPaket:

    yum install sqlite-devel -y

  2. Kompilieren Sie Python aus der Quelle neu:

    ./configure
    make
    make altinstall

10

Mein _sqlite3.so befindet sich in /usr/lib/python2.5/lib-dynload/_sqlite3.so. Nach Ihren Pfaden zu urteilen, sollten Sie die Datei /usr/local/lib/python2.5/lib-dynload/_sqlite3.so haben.

Versuche Folgendes:

find /usr/local -name _sqlite3.so

Wenn die Datei nicht gefunden wird, stimmt möglicherweise etwas mit Ihrer Python-Installation nicht. Wenn dies der Fall ist, stellen Sie sicher, dass sich der Pfad, auf dem es installiert ist, im Python-Pfad befindet. In der Python-Shell

import sys
print sys.path

In meinem Fall befindet sich /usr/lib/python2.5/lib-dynload in der Liste, sodass /usr/lib/python2.5/lib-dynload/_sqlite3.so gefunden werden kann.


1
gerade nachgeschaut. Der Pfad ist dort drin, aber _sqlite3.so fehlt tatsächlich. Irgendwelche Vorschläge, ob ich es separat installieren kann oder besser, um Python neu zu installieren? Vielen Dank!
Alexander van Dijk

2
Es sieht so aus, als hätten Sie Python manuell erstellt und installiert (sind die Pakete in Ihrem Betriebssystem zu alt?), Da es sich in / usr / local befindet. Stellen Sie sicher, dass das sqlite dev-Paket installiert ist (libsqlite3-dev in aktuellen Distributionen, möglicherweise nicht in Ihren), oder Python kann das Modul nicht erstellen. Wenn Sie es installieren, müssen Sie Python neu erstellen, damit es dieses Modul enthält.
Glenn Maynard

Hmm, ich habe libsqlite3-dev installiert und Python neu erstellt, aber jetzt erhalte ich einen weiteren Fehler: ImportError: ./_sqlite3.so: undefiniertes Symbol: PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk

Ich bin verwirrt. Ihre Distribution hat bereits Python 2.5 ( packages.debian.org/lenny/python2.5 ). Warum baust du es selbst?
Glenn Maynard

ah, sorry, falsche Wortwahl. Tatsächlich habe ich Python2.5 über apt-get neu installiert.
Alexander van Dijk

8

Ich habe kürzlich versucht, Python 2.6.7 auf meinem Ubuntu 11.04-Desktop für einige Entwicklungsarbeiten zu installieren. Kam auf ähnliche Probleme wie dieser Thread. Ich habe es behoben, indem ich:

  1. Anpassen der Datei setup.py, um den richtigen SQLite-Entwicklungspfad einzuschließen. Code-Snippet aus setup.py:

    def sqlite_incdir:
    sqlite_dirs_to_check = [
    os.path.join(sqlite_incdir, '..', 'lib64'),
    os.path.join(sqlite_incdir, '..', 'lib'),
    os.path.join(sqlite_incdir, '..', '..', 'lib64'),
    os.path.join(sqlite_incdir, '..', '..', 'lib'),
    '/usr/lib/x86_64-linux-gnu/'
    ]

    Mit dem Bit, das ich hinzugefügt habe, ist '/ usr / lib / x86_64-linux-gnu /'.

  2. Nach dem Ausführen von make erhielt ich keine Warnungen, dass die SQLite-Unterstützung nicht erstellt wurde (dh korrekt erstellt wurde: P), aber nach dem Ausführen make installwurde sqlite3 immer noch nicht mit demselben importiert. "ImportError: No module named _sqlite3" whe running "import sqlite3 " .

    Die Bibliothek wurde also kompiliert, aber nicht in den richtigen Installationspfad verschoben. Daher habe ich die .soDatei kopiert ( cp /usr/src/python/Python-2.6.7/build/lib.linux-x86_64-2.6/_sqlite3.so /usr/local/python-2.6.7/lib/python2.6/sqlite3/- dies sind meine Erstellungspfade, die Sie wahrscheinlich an Ihr Setup anpassen müssen).

Voila! Die SQLite3-Unterstützung funktioniert jetzt.


Danke dir! Nur der erste Teil wurde für Linux Mint Debian Edition, 2014 benötigt
spookylukey

Danke dir! Genau das gleiche Problem für mich. Die Bibliothek wird erstellt, aber nicht in das richtige Verzeichnis kopiert.
Student222

8

Ich habe festgestellt, dass viele Leute auf dieses Problem stoßen, weil ich mit der Multi-Version Python auf meinem eigenen vps (cent os 7 x64) Folgendes gelöst habe:

  1. Suchen Sie die Datei "_sqlite3.so"

    find / -name _sqlite3.so

    aus: /usr/lib64/python2.7/lib-dynload/_sqlite3.so

  2. Suchen Sie das Verzeichnis der Python-Standardbibliothek, das Sie verwenden möchten.

    für mich /usr/local/lib/python3.6/lib-dynload

  3. Kopieren Sie die Datei:

    cp   /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload

Endlich wird alles in Ordnung sein.


6
Hat bei mir nicht funktioniert. Got ImportError: dynamic module does not define module export function (PyInit__sqlite3)auf CentOS 7.
xtluo

Ist .sopy2 für py3.6.4 nicht verwendbar? @xtluo
MeadowMuffins

Ich habe stattdessen diesen Fehler bekommen -ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
bgenchel


6

Mein Python wird aus dem Quellcode erstellt. Die Ursache sind fehlende Optionen bei der Ausführung der Python-Version: 3.7.4

./configure --enable-loadable-sqlite-extensions --enable-optimizations
make
make install

Fest


3

Ich habe das Problem in FreeBSD 8.1:

- No module named _sqlite3 -

Es wird gelöst, indem der Port steht ----------

/usr/ports/databases/py-sqlite3

danach kann man sehen:

OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'

13
Diese Antwort macht wenig Sinn. Kannst du es überarbeiten?
Tim Post

Ich hatte das gleiche Problem, FreeBSD 8.2 mit Py2.7.2. Behebung durch erneutes Ausführen von make / install für py-sqlite3.
Justin

Sie müssen deinstallieren, wenn es zunächst installiert zu sein scheint. freebsd 10.2
Kunthar

2

Ist das Paket python-pysqlite2 installiert?

sudo apt-get install python-pysqlite2

1
SQLite wird mit Python installiert. Sie müssen kein separates Paket dafür installieren, und wir können feststellen, dass er bereits über die von Python bereitgestellte Bibliothek verfügt. Die Installation von Python-SQLite wäre bestenfalls verwirrend.
Glenn Maynard

Gehirnkrampf. Ich meinte das python-pysqlite2-Paket. Ohne dieses Paket könnte ich Django / sqlite nicht dazu bringen, an Lenny zu arbeiten. Ich habe meine Antwort aktualisiert.
Bryan

Ich habe Python-Pysqlite2 installiert.
Alexander van Dijk

2

Überprüfen Sie Ihre Datei settings.py. Haben Sie nicht einfach "sqlite" anstelle von "sqlite3" für das Datenbankmodul geschrieben?


2

sqlite3wird mit Python geliefert. Ich hatte auch das gleiche Problem, ich habe es nur deinstalliert python3.6und erneut installiert.

Deinstallieren Sie vorhandene Python:

sudo apt-get remove --purge python3.6

Installieren Sie python3.6:

sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
sudo make altinstall

1

Sie müssen in Centos oder Redhat sein und Python selbst kompilieren. Es ist Pythons Fehler. Tun Sie dies in Ihrem Python-Quellcode-Verzeichnis und tun Sie dies unten

curl -sk https://gist.github.com/msabramo/2727063/raw/59ea097a1f4c6f114c32f7743308a061698b17fd/gistfile1.diff | patch -p1

1

Ich habe das gleiche Problem, nichts hat für mich von oben funktioniert und jetzt habe ich es behoben durch

einfach entfernen python.pipund sqlite3und wieder installieren

  1. sudo apt-get remove python.pip
  2. sudo apt-get remove sqlite3

Installieren Sie es jetzt erneut

  1. sudo apt-get install python.pip
  2. sudo apt-get install sqlite3

In meinem Fall sqlite3zeigte sich bei der erneuten Installation ein Fehler, den ich eingab

  1. sqlite3

auf dem Terminal, um zu überprüfen, ob es entfernt wurde oder nicht und es begann es auszupacken

Sobald das sqlite3Fireup-Terminal installiert ist und schreiben

  1. sqlite3
  2. database.db (um eine Datenbank zu erstellen)

Ich bin sicher, das wird dir definitiv helfen


1

Antwort für alle, die auf dieser Seite landen und nach einer Lösung für Windows suchen:

Sie müssen pysqlite3 oder db-sqlite3 installieren, falls nicht bereits installiert. Sie können Folgendes verwenden, um zu installieren.

  • pip install pysqlite3
  • pip installiere db-sqlite3

Für mich war das Problem mit der DLL-Datei von sqlite3.

Lösung:

  1. Ich habe eine DLL-Datei von einer SQLite-Site genommen . Dies kann je nach Version der Python-Installation variieren.

  2. Ich habe es in das DLL-Verzeichnis der Umgebung eingefügt. Für mich war es "C: \ Anaconda \ Lib \ DLLs", aber suchen Sie nach Ihren. Vor und nach dem Platzieren der DLL-Datei


Ich hatte den genauen Fehler. Das hat mein Problem irgendwie gelöst. Vielen Dank!
Uqji

1

Ich war enttäuscht, dass dieses Problem bis heute besteht. Da ich kürzlich versucht habe, vCD CLI unter CentOS 8.1 zu installieren, wurde ich beim Versuch, es auszuführen, mit demselben Fehler begrüßt. Die Art und Weise, wie ich es in meinem Fall lösen musste, ist wie folgt:

  • Installieren Sie SQLite3 von Grund auf mit dem richtigen Präfix
  • Machen Sie meine Python-Installation sauber
  • Führen Sie Make install aus, um Python neu zu installieren

Da habe ich dies getan, um einen anderen Blogpost über die Installation von vCD CLI und VMware Container Service Extension zu erstellen. Am Ende habe ich die Schritte, mit denen ich das Problem behoben habe, erfasst und in einem separaten Blog-Beitrag unter folgender Adresse abgelegt:

http://www.virtualizationteam.com/cloud/running-vcd-cli-fail-with-the-following-error-modulenotfounderror-no-module-named-_sqlite3.html

Ich hoffe, dass dies hilfreich ist, da die obigen Tipps mir zwar geholfen haben, eine Lösung zu finden, ich jedoch einige davon kombinieren und ein wenig modifizieren musste.


Vielen Dank, dass Sie Ihre Zugehörigkeit zu dem von Ihnen bereitgestellten Link offengelegt haben! Es wird geschätzt.
Robert Columbia

-1

Laden Sie sqlite3 herunter:

wget http://www.sqlite.org/2016/sqlite-autoconf-3150000.tar.gz

Führen Sie zur Installation die folgenden Schritte aus:

$tar xvfz sqlite-autoconf-3071502.tar.gz
$cd sqlite-autoconf-3071502
$./configure --prefix=/usr/local
$make install

1
Diese Frage wurde 2009 gestellt und betraf Debian 5. sqlite3 ist jetzt in den Repos verfügbar (seit Wheezy), sodass es nicht erforderlich ist, es manuell zu installieren. Ich denke, das gilt auch für die meisten Distributionen.
Jérôme


-3

Versuchen Sie zu kopieren, _sqlite3.sodamit Python es finden kann.

Es sollte so einfach sein wie:

cp /usr/lib64/python2.6/lib-dynload/_sqlite3.so /usr/local/lib/python2.7/

Vertrau mir, versuch es.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.