Ningún módulo llamado _sqlite3


136

Estoy tratando de ejecutar una aplicación Django en mi VPS con Debian 5. Cuando ejecuto una aplicación de demostración, aparece este error:

  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

Mirando la instalación de Python, da el mismo error:

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

Leyendo en la web, aprendo que Python 2.5 debería venir con todos los contenedores SQLite necesarios incluidos. ¿Necesito reinstalar Python o hay otra forma de poner este módulo en funcionamiento?


1
El mismo problema es para Python compilado 3.5.5 de la fuente
Alex-Bogdanov

Respuestas:


133

Parece que su archivo MAKE no incluyó el .soarchivo apropiado . Puede corregir este problema con los pasos a continuación:

  1. Instalar sqlite-devel(o libsqlite3-deven algunos sistemas basados ​​en Debian)
  2. Vuelva a configurar y compiló Python con ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Nota

La sudo make installparte establecerá que la versión de Python sea el estándar de todo el sistema, lo que puede tener consecuencias imprevistas. Si ejecuta este comando en su estación de trabajo, es probable que desee tenerlo instalado junto con el python existente, lo que se puede hacer con sudo make altinstall.


Gracias jammyWolf. No creo que haya "perdido" el archivo después de la primera vez que ejecuté configure, más bien, que ejecutar configure con sqlite-devel ya instalado hizo toda esta diferencia.
Jeff Taylor

44
¿Cómo puedo instalar sqlite-devel? Estoy en un sistema Linux personalizado system.I acaba de descargar sqlite-autoconf-3100200.tar.gzy ejecutar ./configure, make && make install. Después de recompilar python3 todavía no funciona.
AntiMoron

2
Para cualquiera que lea esto, asegúrese de agregar la opción de configuración en la respuesta. Eso es lo que me salvó también. De lo contrario, no importará que haya instalado libsqlite3-dev.
ticster

3
¿Cómo verifico dónde está el script de configuración?
Jenna Kwon

1
Ninguna de estas soluciones (ref: todo en esta página) funciona para Amazon Linux con Python 3.8.0
bgenchel

80

Tuve el mismo problema (compilando python2.5desde la fuente en Ubuntu Lucid), y import sqlite3lancé esta misma excepción. Lo instalé libsqlite3-devdesde el administrador de paquetes, recompilé python2.5 y luego funcionó la importación.


66
¡Exactamente! No tiene que manipular manualmente con archivos binarios y entorno. En mi caso, ya tenía Python 2.7 construido desde la fuente, así que, para minimizar la compilación, ejecuté apt-get install libsqlite3-dev; ./configure; hacer libinstall; hacer una instalación compartida;
oxfn

38

Tuve el mismo problema con Python 3.5 en Ubuntu mientras usaba pyenv .

Si está instalando Python usando pyenv , aparece como uno de los problemas de compilación más comunes . Para resolverlo, elimine la versión de python instalada, instale los requisitos (para este caso en particular libsqlite3-dev), luego reinstale la versión de python.


22

Esto es lo que hice para que funcione.

Estoy usando pythonbrew (que está usando pip) con python 2.7.5 instalado.

Primero hice lo que dijo Zubair (arriba) y ejecuté este comando:

sudo apt-get install libsqlite3-dev

Luego ejecuté este comando:

pip install pysqlite

Esto solucionó el problema de la base de datos y obtuve confirmación de esto cuando ejecuté:

python manager.py syncdb

2
en Centos 6.5 corre en yum install sqlite-devellugar de la primera línea.
Ehsan88

3
Eso es bueno para Python 2, pero pysqliteahora está sqlite3en Python 3, y no puedes hacerlo pip -m install.
clabe45

55
pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library
Stephen

19
  1. Instala el sqlite-develpaquete:

    yum install sqlite-devel -y

  2. Recompile Python desde la fuente:

    ./configure
    make
    make altinstall

10

Mi _sqlite3.so está en /usr/lib/python2.5/lib-dynload/_sqlite3.so. A juzgar por sus rutas, debe tener el archivo /usr/local/lib/python2.5/lib-dynload/_sqlite3.so.

Intenta lo siguiente:

find /usr/local -name _sqlite3.so

Si no se encuentra el archivo, algo puede estar mal con su instalación de Python. Si es así, asegúrese de que la ruta en la que está instalado esté en la ruta de Python. En el shell de Python,

import sys
print sys.path

En mi caso, /usr/lib/python2.5/lib-dynload está en la lista, por lo que puede encontrar /usr/lib/python2.5/lib-dynload/_sqlite3.so.


2
Acabo de revisarlo. el camino está ahí, pero _sqlite3.so de hecho falta. ¿Alguna sugerencia si puedo instalarlo por separado o mejor para reinstalar Python? ¡Gracias!
Alexander van Dijk

2
Parece que compiló e instaló Python manualmente (¿los paquetes en su sistema operativo son demasiado antiguos?), Ya que está en / usr / local. Asegúrese de que el paquete de desarrollo sqlite esté instalado (libsqlite3-dev en las distribuciones actuales, tal vez no en la suya), o Python no podrá construir el módulo. Si lo instala, deberá reconstruir Python para que incluya ese módulo.
Glenn Maynard el

Hmm, instalé libsqlite3-dev y reconstruí Python, pero ahora recibo otro error: ImportError: ./_sqlite3.so: símbolo indefinido: PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk

Estoy confundido. Su distribución ya tiene Python 2.5 ( packages.debian.org/lenny/python2.5 ). ¿Por qué lo construyes tú mismo?
Glenn Maynard el

1
Pero estás ejecutando Python fuera de / usr / local. Parece que instaló Python dos veces, una vez usted mismo y otra vez con apt-get, y el que está en / usr / local está roto.
Glenn Maynard el

8

Recientemente intenté instalar python 2.6.7 en mi escritorio Ubuntu 11.04 para algunos trabajos de desarrollo. Encontré problemas similares a este hilo. Me he dañado para arreglarlo:

  1. Ajuste del archivo setup.py para incluir la ruta de desarrollo sqlite correcta. Fragmento de código 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/'
    ]

    Con el bit que agregué es '/ usr / lib / x86_64-linux-gnu /'.

  2. Después de ejecutar make, no recibí ninguna advertencia que dijera que el soporte de sqlite no se creó (es decir, se compiló correctamente: P), pero después de ejecutar make install, sqlite3 aún no se importó con el mismo " ImportError: No module named _sqlite3" whe running "import sqlite3".

    Por lo tanto, la biblioteca se compiló, pero no se movió a la ruta de instalación correcta, por lo que copié el .soarchivo ( 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/estas son mis rutas de compilación, probablemente deba ajustarlas a su configuración).

Voila! El soporte de SQLite3 ahora funciona.


¡Gracias! Solo se necesitaba la primera parte para Linux Mint Debian Edition, 2014
spookylukey

¡Gracias! Exactamente el mismo problema para mí. La biblioteca está construida pero no copiada en el directorio correcto.
Estudiante222

8

Encontré que muchas personas enfrentan este problema porque el Python de versiones múltiples, en mi propio vps (cent os 7 x64), lo resolví de esta manera:

  1. Encuentra el archivo "_sqlite3.so"

    find / -name _sqlite3.so

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

  2. Encuentre el directorio de la biblioteca estándar de Python que desea usar,

    para mi /usr/local/lib/python3.6/lib-dynload

  3. Copia el archivo:

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

Finalmente, todo estará bien.


66
No funciono para mi. Conseguido ImportError: dynamic module does not define module export function (PyInit__sqlite3)en CentOS 7.
xtluo

Lo mismo para mí, ¿es que py2 .sono se puede usar para py3.6.4? @xtluo
MeadowMuffins

En su lugar, recibí este error -ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
bgenchel

6

Esto funcionó para mí en Redhat Centos 6.5:

yum install sqlite-devel
pip install pysqlite

1
solo digo que no necesitaba hacer el paso de pip
HashRocketSyntax

6

mi python está construido desde la fuente, la causa es la falta de opciones cuando el ejecutivo configura la versión de python: 3.7.4

./configure --enable-loadable-sqlite-extensions --enable-optimizations
make
make install

fijo


3

Tengo el problema en FreeBSD 8.1:

- No module named _sqlite3 -

Se resuelve por soporte el puerto ----------

/usr/ports/databases/py-sqlite3

después de esto se puede ver:

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

14
Esta respuesta tiene muy poco sentido. ¿Puedes revisarlo?
Tim Post

Tuve el mismo problema, FreeBSD 8.2 con Py2.7.2. Se resuelve simplemente ejecutando make / install nuevamente, para py-sqlite3.
Justin

tienes que hacer la desinstalación si parece instalada al principio. freebsd 10.2
Kunthar

2

¿ Está instalado el paquete python-pysqlite2 ?

sudo apt-get install python-pysqlite2

1
sqlite se instala con Python; no necesita instalar un paquete separado para él, y podemos decir que él ya tiene la biblioteca proporcionada por Python. Instalar python-sqlite sería confuso en el mejor de los casos.
Glenn Maynard el

Calambre cerebral Me refería al paquete python-pysqlite2. No podría hacer que Django / sqlite funcione en lenny sin este paquete. He actualizado mi respuesta.
bryan el

Tengo instalado python-pysqlite2.
Alexander van Dijk

2

Comprobando su archivo settings.py. ¿No escribió simplemente "sqlite" en lugar de "sqlite3" para el motor de base de datos?


2

sqlite3Se envía con Python. También tuve el mismo problema, simplemente lo desinstalé python3.6y lo instalé nuevamente.

Desinstalar python existente:

sudo apt-get remove --purge python3.6

Instala 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

1

debe estar en centos o redhat y compilar Python usted mismo, es un error de Python hacer esto en su directorio de código fuente de Python y hacer esto a continuación

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

1

Tengo el mismo problema, nada me funcionó de lo anterior y ahora lo solucioné por

basta con retirar python.pipy sqlite3y reinstalación

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

ahora instálalo de nuevo

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

en mi caso, mientras sqlite3volvía a instalar , mostró algún error y luego escribí

  1. sqlite3

en la terminal para verificar si se quitó o no y comenzó a desempaquetarlo

una vez sqlite3instalado el terminal de encendido y escribe

  1. sqlite3
  2. database.db (para crear una base de datos)

Estoy seguro de que esto definitivamente te ayudará


1

Poniendo respuesta para cualquiera que llegue a esta página buscando una solución para el sistema operativo Windows:

Debe instalar pysqlite3 o db-sqlite3 si aún no está instalado. puede usar lo siguiente para instalar.

  • pip install pysqlite3
  • pip install db-sqlite3

Para mí, el problema era con el archivo DLL de sqlite3.

Solución:

  1. Tomé el archivo DLL del sitio sqlite . Esto puede variar según su versión de instalación de Python.

  2. Lo pegué en el directorio DLL del env. para mí fue "C: \ Anaconda \ Lib \ DLLs", pero verifique el suyo. Antes y después de colocar el archivo DLL


Tuve el error exacto. Esto de alguna manera resolvió mi problema. ¡Gracias!
uqji

1

Me decepcionó que este problema aún exista hasta hoy. Como he estado intentando instalar vCD CLI recientemente en CentOS 8.1 y recibí el mismo error cuando intenté ejecutarlo. La forma en que tuve que resolverlo en mi caso es la siguiente:

  • Instale SQLite3 desde cero con el prefijo apropiado
  • Hacer limpia mi instalación de Python
  • Ejecute Make install para reinstalar Python

Como he estado haciendo esto para crear una publicación de blog diferente sobre cómo instalar vCD CLI y VMware Container Service Extension. Terminé capturando los pasos que usé para solucionar el problema y lo puse en una publicación de blog separada en:

http://www.virtualizationteam.com/cloud/running-vcd-cli-fail-with-the-following-error-modulenotfounderror-no-module-named-_sqlite3.html

Espero que esto sea útil, ya que si bien los consejos anteriores me ayudaron a encontrar una solución, tuve que combinar algunos de ellos y modificarlos un poco.


¡Gracias por divulgar su afiliación con el enlace que está proporcionando! Es apreciado.
Robert Columbia

-1

Descargar sqlite3:

wget http://www.sqlite.org/2016/sqlite-autoconf-3150000.tar.gz

Siga estos pasos para instalar:

$tar xvfz sqlite-autoconf-3071502.tar.gz
$cd sqlite-autoconf-3071502
$./configure --prefix=/usr/local
$make install

1
Esta pregunta se hizo en 2009 y se refería a Debian 5. sqlite3 ahora está disponible en los repositorios (desde Wheezy), por lo que no es necesario instalarlo manualmente. Supongo que esto también es cierto para la mayoría de las distribuciones.
Jérôme


-3

Intenta copiar _sqlite3.sopara que Python pueda encontrarlo.

Debería ser tan simple como:

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

Confía en mí, pruébalo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.