Django 1.4 est installé sur mon rhel 5. Par défaut, rhel 5 contient python 2.4, mais pour utiliser Django 1.4, j’ai installé manuellement python 2.7.3 Le serveur de développement fonctionne correctement, mais lorsque je crée un nouveau après avoir modifié le fichier settings.py en tant que:
'ENGINE': 'Django.db.backends.sqlite3', 'NAME': '/home/Oracle/Desktop/test1/my.db'
Maintenant, quand je donne la commande python2.7 manage.py syncdb, j'obtiens le message d'erreur suivant:
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
S'il vous plaît suggérer le moyen de sortir?
Sur le Django.db.backends.sqlite3 , il essaie de
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)
Donc, un des modules nommésqlite3oupysqlite2n'est pas installé. Essayez de les installer.
$ pip install sqlite3 # or pysqlite2
Mise à jour
sqlite3
et pysqlite2
font partie de Python, donc ces deux paquets ne sont plus dans PyPi .
Vous pouvez également avoir compilé python à la main sans qu'une bibliothèque de développement SQLite ne soit installée.
Alors faites
Sudo apt-get install libsqlite3-dev libsqlite3
Ensuite, réinstallez python
test en entrant
python
>>> import sqlite3
Sur MacOSX 10.9 (Mavericks), je devais exécuter cette commande:
CPPFLAGS=-I/usr/local/opt/sqlite/include; LDFLAGS=-L/usr/local/opt/sqlite/lib; pip install pysqlite
J'ai utilisé homebrew pour installer sqlite3.
brew update; brew install sqlite
J'ai reçu un message d'erreur très similaire lorsque j'ai essayé d'exécuter le serveur de développement Django:
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
J'ai résolu ce problème en installant le module pysqlite
de Python avec pip install pysqlite
.
C'est ce que j'ai fait pour que ça fonctionne.
J'utilise pythonbrew (qui utilise pip) avec python 2.7.5 installé.
J'ai d'abord fait ce que Zubair (ci-dessus) a dit et j'ai exécuté cette commande:
Sudo apt-get install libsqlite3-dev
Puis j'ai lancé cette commande:
pip install pysqlite
Cela a résolu le problème de la base de données et je l’ai confirmé lorsque j’ai exécuté:
python manager.py syncdb
sqlite3 fait partie de Python à partir de la version 2.5. Installez cette lib:
Sudo apt-get install libsqlite3-dev
Ou vous pouvez également essayer d'installer le paquet Python-dev.
J'ai eu le même problème avec Python 2.6.8 construit à partir de la source sur Red Hat (mais cela vaut probablement pour d'autres versions sur d'autres systèmes d'exploitation).
Mon problème a été résolu en installant sqlite-devel (Red Hat) avant la configuration et la construction de python (ou do config.status --recheck
dans votre répertoire de construction, suivi de make
et make install
.
La réponse de MordicusEtCubitus est correcte. Je ne peux pas encore vous inviter en tant que novice.
Juste pour ajouter à votre réponse, sur Fedora (23), exécutez la commande suivante pour installer à la place.
Sudo dnf install libsqlite3x-devel libsqlite3x
FreeBSD10 : pour python3.5
pkg install py35-sqlite3