python - Kein Modul namens _sqlite3



django debian (14)

Dies hat bei Redhat Centos 6.5 für mich funktioniert:

yum install sqlite-devel
pip install pysqlite

Ich versuche eine Django App auf meinem VPS unter Debian 5 laufen zu lassen. Wenn ich eine Demo-App starte, kommt es mit diesem Fehler zurück:

  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

Betrachtet man die Python-Installation, gibt es den gleichen Fehler:

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 Internet lese, lerne ich, dass Python 2.5 mit allen notwendigen SQLite Wrappern geliefert werden sollte. Muss ich Python neu installieren, oder gibt es eine andere Möglichkeit, dieses Modul zum Laufen zu bringen?


Ich habe das gleiche Problem, nichts funktionierte für mich von den oben genannten und jetzt habe ich es behoben

entferne einfach python.pip und sqlite3 und installiere neu

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

Jetzt installiere es erneut

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

in meinem Fall bei der Installation von sqlite3 wieder zeigte es einen Fehler, dann tippte ich

  1. sqlite3

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

Sobald der sqlite3 Fire-Up-Terminal installiert ist und schreiben

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

Ich bin mir sicher, dass dir das definitiv helfen wird


Mein _sqlite3.so ist in /usr/lib/python2.5/lib-dynload/_sqlite3.so. Ausgehend von Ihren Pfaden 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 der Pfad, in dem es installiert ist, im Python-Pfad liegt. In der Python-Shell

import sys
print sys.path

In meinem Fall ist /usr/lib/python2.5/lib-dynload in der Liste, so dass es /usr/lib/python2.5/lib-dynload/_sqlite3.so finden kann.


Das habe ich getan, um es zum Laufen zu bringen.

Ich benutze Pythonbrew (die pip verwendet) mit Python 2.7.5 installiert.

Ich tat zuerst, was Zubair (oben) sagte und führte diesen Befehl aus:

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 lief:

python manager.py syncdb

Ich hatte das gleiche Problem mit Python 3.5 auf Ubuntu während der Verwendung von pyenv .

Wenn Sie das Python mithilfe von pyenv , wird es als eines der häufigsten pyenv aufgeführt. Um es zu lösen, entfernen Sie die installierte Python-Version, installieren Sie die Anforderungen (für diesen speziellen Fall libsqlite3-dev ), und installieren Sie die Python-Version neu.


Es scheint, dass Ihr Makefile die entsprechende .so Datei nicht enthält. Ich habe dieses Problem mit den folgenden Schritten behoben:

  1. Installiere sqlite-devel (oder libsqlite3-dev auf einigen Debian-basierten Systemen)
  2. Python neu konfiguriert und erneut kompiliert mit ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Überprüfen Sie Ihre settings.py Datei. Hast du nicht einfach "sqlite" anstelle von "sqlite3" für die Datenbank-Engine geschrieben?


  1. Installieren Sie das Paket sqlite-devel :

    yum install sqlite-devel -y

  2. Erneutes Kompilieren von Python aus der Quelle:

    ./configure
    make
    make altinstall
    

Sie müssen in Centos oder Redhat sein und Python selbst kompilieren, es ist Pythons Bug, 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

Ich habe kürzlich versucht, Python 2.6.7 auf meinem Ubuntu 11.04 Desktop für einige Entwicklerarbeiten zu installieren. Es sind ähnliche Probleme mit diesem Thread aufgetreten. Ich habe versucht, es zu reparieren durch:

  1. Anpassen der Datei setup.py, um den korrekten sqlite-dev-Pfad einzubeziehen. 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, war '/ usr / lib / x86_64-linux-gnu /'.

  2. Nach dem Ausführen von make habe ich keine Warnungen erhalten, dass die sqlite-Unterstützung nicht erstellt wurde (dh, es wurde korrekt erstellt: P), aber nachdem make install , importierte sqlite3 immer noch nicht mit dem gleichen " ImportError: No module named _sqlite3" whe running "import sqlite3 ".

    Also, die Bibliothek wurde kompiliert, aber nicht zum richtigen Installationspfad verschoben, also kopierte ich die .so Datei ( 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/ - das sind meine Build-Pfade, die du wahrscheinlich anpassen musst.

Voila! SQLite3-Unterstützung funktioniert jetzt.


Ich hatte das gleiche Problem ( python2.5 aus der Quelle auf Ubuntu Lucid import sqlite3 ), und import sqlite3 warf die gleiche Ausnahme. Ich habe libsqlite3-dev vom Paketmanager installiert, libsqlite3-dev neu kompiliert, und dann funktionierte der Import.


Ich habe das Problem in FreeBSD 8.1:

- No module named _sqlite3 -

Es wird gelöst, indem man den Hafen ----------

/usr/ports/databases/py-sqlite3

Danach kann man sehen:

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

Laden Sie sqlite3 herunter:

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

Befolgen Sie diese Schritte zur Installation von:

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

Einverstanden, dass dies ein Weg Problem ist, aber fwiw, ich hatte diesen gleichen Fehler. Es lag an dem Fehler, bei der Einrichtung meiner virtuellen Umgebung einen relativen Pfad für meine ausführbare Python-Datei zu verwenden. Ich hatte das getan:

virtualenv -p ~/python_runtimes/2.7.3/bin/python venv2.7.3 --distribute

Stattdessen musste ich der ausführbaren Python-Datei den vollständigen Pfad geben.

HTH, Harlin





python django sqlite debian