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?
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é.
Il semble que votre fichier make n'inclut pas le fichier .so
approprié. Vous pouvez corriger ce problème en procédant comme suit:
sqlite-devel
(ou libsqlite3-dev
sur certains systèmes Debian)./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
.
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
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.
Installez le package sqlite-devel
:
yum install sqlite-devel -y
Recompiler python à partir de la source:
./configure
make
make altinstall
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.
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:
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 /.
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.
Cela a fonctionné pour moi dans Redhat Centos 6.5:
yum install sqlite-devel
pip install pysqlite
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:
Trouver le fichier "_sqlite3.so"
find / -name _sqlite3.so
out: /usr/lib64/python2.7/lib-dynload/_sqlite3.so
Trouvez le répertoire de la bibliothèque standard Python que vous souhaitez utiliser,
pour moi /usr/local/lib/python3.6/lib-dynload
Copiez le fichier:
cp /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload
Enfin, tout ira bien.
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'
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
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?
Le paquet python-pysqlite2 est-il installé?
Sudo apt-get install python-pysqlite2
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
Sudo apt-get remove python.pip
Sudo apt-get remove sqlite3
maintenant installez-le à nouveau
Sudo apt-get install python.pip
Sudo apt-get install sqlite3
dans mon cas, lors de l'installation de sqlite3
, il a de nouveau affiché une erreur .__
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
sqlite3
database.db
(pour créer une base de données)Je suis sûr que cela va certainement vous aider
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