webentwicklung-frage-antwort-db.com.de

Django - Kein Modul mit dem Namen _sqlite3

Ich habe Django 1.4 auf meinem Rhel 5 installiert. Standardmäßig hat Rhel 5 Python 2.4, aber um Django 1.4 zu verwenden, habe ich Python 2.7.3 Manuell installiert. Der Entwicklungsserver läuft einwandfrei, aber wenn ich ein neues Projekt erstellt habe und nach dem Ändern der Datei settings.py als:

'ENGINE': 'Django.db.backends.sqlite3', 'NAME': '/home/Oracle/Desktop/test1/my.db'

Wenn ich jetzt den syncdb-Befehl python2.7 manage.py eingebe, erhalte ich den Fehler als:

Traceback (most recent call last):
 File "manage.py", line 10, in <module>
   execute_from_command_line(sys.argv)
 File "/usr/local/lib/python2.7/site-packages/Django/core/management/__init__.py",
line 443, in execute_from_command_line
   utility.execute()
 File "/usr/local/lib/python2.7/site-packages/Django/core/management/__init__.py",
line 382, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "/usr/local/lib/python2.7/site-packages/Django/core/management/__init__.py",
line 261, in fetch_command
   klass = load_command_class(app_name, subcommand)
 File "/usr/local/lib/python2.7/site-packages/Django/core/management/__init__.py",
line 69, in load_command_class
   module = import_module('%s.management.commands.%s' % (app_name, name))
 File "/usr/local/lib/python2.7/site-packages/Django/utils/importlib.py",
line 35, in import_module
   __import__(name)
 File "/usr/local/lib/python2.7/site-packages/Django/core/management/commands/syncdb.py",
line 8, in <module>
   from Django.core.management.sql import custom_sql_for_model,
emit_post_sync_signal
 File "/usr/local/lib/python2.7/site-packages/Django/core/management/sql.py",
line 6, in <module>
   from Django.db import models
 File "/usr/local/lib/python2.7/site-packages/Django/db/__init__.py",
line 40, in <module>
   backend = load_backend(connection.settings_dict['ENGINE'])
 File "/usr/local/lib/python2.7/site-packages/Django/db/__init__.py",
line 34, in __getattr__
   return getattr(connections[DEFAULT_DB_ALIAS], item)
 File "/usr/local/lib/python2.7/site-packages/Django/db/utils.py",
line 92, in __getitem__
   backend = load_backend(db['ENGINE'])
 File "/usr/local/lib/python2.7/site-packages/Django/db/utils.py",
line 24, in load_backend
   return import_module('.base', backend_name)
 File "/usr/local/lib/python2.7/site-packages/Django/utils/importlib.py",
line 35, in import_module
   __import__(name)
 File "/usr/local/lib/python2.7/site-packages/Django/db/backends/sqlite3/base.py",
line 31, in <module>
   raise ImproperlyConfigured("Error loading either pysqlite2 or
sqlite3 modules (tried in that order): %s" % exc)
Django.core.exceptions.ImproperlyConfigured: Error loading either
pysqlite2 or sqlite3 modules (tried in that order): No module named
_sqlite3

Bitte den Ausweg vorschlagen?

18
Satyam Garg

Bei Django.db.backends.sqlite3 versucht es das

try:
    try:
        from pysqlite2 import dbapi2 as Database
    except ImportError:
        from sqlite3 import dbapi2 as Database
except ImportError as exc:
    from Django.core.exceptions import ImproperlyConfigured
    raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)

Daher ist eines der Module mit dem Namensqlite3oderpysqlite2nicht installiert. Versuchen Sie, sie zu installieren

$ pip install sqlite3 # or pysqlite2

Update

sqlite3 und pysqlite2 sind Teil von Python, daher sind diese beiden Pakete nicht mehr in PyPi .

6
Alireza Savand

Möglicherweise haben Sie Python auch von Hand zusammengestellt, ohne dass eine SQLite-Entwicklungsbibliothek installiert ist

Dann mach's 

Sudo apt-get install libsqlite3-dev libsqlite3

Installieren Sie dann Python erneut

testen Sie durch Eingabe

python
>>> import sqlite3
22

Auf MacOSX 10.9 (Mavericks) musste ich diesen Befehl ausführen:

CPPFLAGS=-I/usr/local/opt/sqlite/include; LDFLAGS=-L/usr/local/opt/sqlite/lib; pip install pysqlite

Ich habe Homebrew verwendet, um sqlite3 zu installieren.

brew update; brew install sqlite
5
Nate Aune

Ich habe eine sehr ähnliche Fehlermeldung erhalten, als ich versuchte, den Django-Entwicklungsserver auszuführen:

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): dlopen(/Users/Rubinous/Projects/Jiiri2/jiiri_venv/lib/python2.7/lib-dynload/_sqlite3.so, 2): Library not loaded: /usr/local/opt/sqlite/lib/libsqlite3.0.8.6.dylib
Referenced from: /Users/Rubinous/Projects/Jiiri2/jiiri_venv/lib/python2.7/lib-dynload/_sqlite3.so
Reason: image not found

Ich habe das Problem gelöst, indem ich pysqlite Python-Modul mit pip install pysqlite installiert habe.

5
Rubinous

Das habe ich getan, damit es funktioniert.

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

Ich habe zuerst 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 behebte das Datenbankproblem und ich erhielt eine Bestätigung, als ich lief:

python manager.py syncdb
4
Joe

sqlite3 ist ab Version 2.5 Teil des Python. Installieren Sie diese Bibliothek:

Sudo apt-get install libsqlite3-dev

Sie können auch versuchen, das Python-dev-Paket zu installieren.

3
Zubair Afzal

Ich hatte das gleiche Problem mit Python 2.6.8, das auf Red Hat aus dem Quellcode erstellt wurde (dies gilt jedoch wahrscheinlich auch für andere Versionen unter anderen Betriebssystemen).

Mein Problem wurde durch Installieren von sqlite-devel (Red Hat) before Konfigurieren und Erstellen von Python gelöst (oder config.status --recheck in Ihrem Build-Verzeichnis gefolgt von make und make install).

1

Die Antwort von MordicusEtCubitus ist richtig. Kann dich noch nicht als Neuling bezeichnen.

Um Ihrer Antwort noch etwas hinzuzufügen, führen Sie auf Fedora (23) stattdessen den folgenden Befehl zur Installation aus.

Sudo dnf install libsqlite3x-devel libsqlite3x
0
srv_ER

FreeBSD10 : für python3.5

pkg install py35-sqlite3
0
Ruslan