web-dev-qa-db-fra.com

Aucun module nommé _sqlite3

J'essaie de lancer une application Django sur mon VPS sous Debian 5. Lorsque j'exécute une application de démonstration, cette erreur revient:

  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

En regardant l’installation de Python, cela donne la même erreur:

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

En lisant sur le Web, j'apprends que Python 2.5 doit être fourni avec tous les wrappers SQLite nécessaires. Dois-je réinstaller Python ou existe-t-il un autre moyen de faire fonctionner ce module? 

90
Alexander van Dijk

J'ai eu le même problème (construire python2.5 à partir des sources sur Ubuntu Lucid) et import sqlite3 a lancé cette même exception. J'ai installé libsqlite3-dev à partir du gestionnaire de paquets, python2.5 recompilé, puis l'importation a fonctionné.

73
Emilien

Il semble que votre fichier make n'inclut pas le fichier .so approprié. Vous pouvez corriger ce problème en procédant comme suit:

  1. Installez sqlite-devel (ou libsqlite3-dev sur certains systèmes Debian)
  2. Reconfigurer et recompiler Python avec ./configure --enable-loadable-sqlite-extensions && make && Sudo make install

Remarque

La partie Sudo make install définira cette version python comme la norme à l’échelle du système, ce qui peut avoir des conséquences imprévues. Si vous exécutez cette commande sur votre poste de travail, vous souhaiterez probablement l’installer à côté de le python existant, ce qui peut être fait avec Sudo make altinstall .

67
jammyWolf

C'est ce que j'ai fait pour le faire fonctionner.

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 j'en ai eu confirmation lorsque j'ai lancé:

python manager.py syncdb
18
Joe

J'ai eu le même problème avec Python 3.5 sur Ubuntu en utilisant pyenv .

Si vous installez le python à l'aide de pyenv , il est répertorié comme l'un des problèmes de construction communs . Pour le résoudre, supprimez la version de Python installée, installez la configuration requise (pour ce cas particulier libsqlite3-dev), puis réinstallez la version de Python. 

15
Tiny Instance
  1. Installez le package sqlite-devel:

    yum install sqlite-devel -y

  2. Recompiler python à partir de la source:

    ./configure
    make
    make altinstall
    
11
John Zhang

Mon _sqlite3.so se trouve dans /usr/lib/python2.5/lib-dynload/_sqlite3.so. À en juger par vos chemins, vous devriez avoir le fichier /usr/local/lib/python2.5/lib-dynload/_sqlite3.so.

Essayez ce qui suit:

find /usr/local -name _sqlite3.so

Si le fichier n'est pas trouvé, il est possible que votre installation de Python soit gênée. Si c'est le cas, assurez-vous que le chemin d'installation est dans le chemin Python. Dans le shell Python,

import sys
print sys.path

Dans mon cas, /usr/lib/python2.5/lib-dynload est dans la liste, il peut donc trouver /usr/lib/python2.5/lib-dynload/_sqlite3.so.

9
Glenn Maynard

J'ai récemment essayé d'installer Python 2.6.7 sur mon bureau Ubuntu 11.04 pour certains travaux de développement. Je suis tombé sur des problèmes similaires à ce fil. J'ai réussi à le réparer en:

  1. Ajuster le fichier setup.py pour inclure le chemin de développement sqlite correct. Extrait de code de 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/'
    ]
    

    Avec le bit que j'ai ajouté, il s'agit de/usr/lib/x86_64-linux-gnu /.

  2. Après avoir exécuté make, je n’ai reçu aucun avertissement indiquant que le support sqlite n’était pas construit (c’est-à-dire qu’il avait été construit correctement: P), mais après avoir exécuté make install, sqlite3 n’a toujours pas été importé avec le même "ImportError: No module named _sqlite3" whe running "import sqlite3".

    Donc, la bibliothèque a été compilée, mais n'a pas été déplacée vers le chemin d'installation correct. J'ai donc copié le fichier .so (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/ - ce sont mes chemins de construction, vous devrez probablement les ajuster à votre configuration).

Voila! Le support SQLite3 fonctionne maintenant.

7
foomip

Cela a fonctionné pour moi dans Redhat Centos 6.5:

yum install sqlite-devel
pip install pysqlite
5
ehsan88

J'ai trouvé que beaucoup de gens rencontraient ce problème parce que le multi-version Python, Sur mon propre vps (cent os 7 x64), je l'ai résolu de cette façon:

  1. Trouver le fichier "_sqlite3.so" 

    find / -name _sqlite3.so
    

    out: /usr/lib64/python2.7/lib-dynload/_sqlite3.so

  2. Trouvez le répertoire de la bibliothèque standard Python que vous souhaitez utiliser,

    pour moi /usr/local/lib/python3.6/lib-dynload

  3. Copiez le fichier:

    cp   /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload
    

Enfin, tout ira bien.

5
Ehco

J'ai le problème dans FreeBSD 8.1:

- No module named _sqlite3 -

Il est résolu par stand le port ----------

/usr/ports/databases/py-sqlite3

après cela on peut voir:

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

sqlite3 est livré avec Python. J'ai également eu le même problème, je viens de désinstaller python3.6 et de le réinstaller.

Désinstallez le python existant:

Sudo apt-get remove --purge python3.6

Installez python3.6:

Sudo apt install build-essential checkinstall
Sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
Sudo make altinstall
2
Mastan Basha Shaik

Vérification de votre fichier settings.py . N'avez-vous pas simplement écrit "sqlite" au lieu de "sqlite3" pour le moteur de base de données?

1
myselfhimself

Le paquet python-pysqlite2 est-il installé?

Sudo apt-get install python-pysqlite2
0
bryan

J'ai eu le même problème, rien ne fonctionnait pour moi des années ci-dessus

il suffit de supprimer python.pip et sqlite3 et de réinstaller

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

maintenant installez-le à nouveau

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

dans mon cas, lors de l'installation de sqlite3, il a de nouveau affiché une erreur .__ 

  1. sqlite3 

sur le terminal pour vérifier s'il a été retiré ou non et il a commencé à le décompresser

une fois que le sqlite3 est installé un terminal et écrivez

  1. sqlite3
  2. database.db (pour créer une base de données)

Je suis sûr que cela va certainement vous aider

0
tosky

vous devez être en centos ou redhat et compiler python vous-même ,

curl -sk https://Gist.github.com/msabramo/2727063/raw/59ea097a1f4c6f114c32f7743308a061698b17fd/gistfile1.diff | patch -p1
0
wolfkdy