web-dev-qa-db-fra.com

Django - Aucun module nommé _sqlite3

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?

18
Satyam Garg

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 .

6
Alireza Savand

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
22
MordicusEtCubitus

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
5
Nate Aune

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.

5
Rubinous

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
4
Joe

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.

3
Zubair Afzal

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.

1

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
0
srv_ER

FreeBSD10 : pour python3.5

pkg install py35-sqlite3
0
Ruslan