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?
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 .
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
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
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.
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
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.
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
).
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
FreeBSD10 : für python3.5
pkg install py35-sqlite3