2008-10-24 36 views
10

estoy corriendo Python 2.6 en Unix y cuando corro el modo interactivo (se supone SQLite ser preinstalado) me sale:no puede importar SQLite con Python 2.6

[[email protected] htdocs]# python 
Python 2.6 (r26:66714, Oct 23 2008, 16:25:34) 
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named sqlite 
>>> 

¿Cómo puedo solucionar esto?

Respuesta

14

El error:

ImportError: No module named _sqlite3 

significa que SQLite 3 no encuentra la biblioteca compartida asociada. En Mac OS X es _sqlite3.so y debería ser el mismo en otros sistemas Unix.

Para resolver el error, debe ubicar la biblioteca _sqlite3.so en su computadora y luego verifique su PYTHONPATH para esta ubicación del directorio.

Para imprimir la ruta de búsqueda de Python introduce lo siguiente en el terminal de Python:

import sys 
print sys.path 

Si el directorio que contiene la biblioteca de falta puede intentar añadir de forma interactiva con

sys.path.append('/your/dir/here') 

y tratar

import sqlite3 

nuevamente. Si esto funciona, debe agregar este directorio permanentemente a su variable de entorno PYTHONPATH.

PD: Si falta la biblioteca, debe (re) instalar el módulo.

10
import sqlite3 

sqlite3 - DB-API 2.0 interfaz para bases de datos SQLite.

Falta el .so (objeto compartido) - probablemente sea un paso de instalación. En mi instalación de Python en Linux, es _sqlite3 en:

${somewhere}/lib/python2.6/lib-dynload/_sqlite3.so 
1

Prueba esto:

from pysqlite2 import dbapi2 as sqlite 
1

En mi sistema _sqlite3.so ubicada en:

'/usr/lib/python2.6/lib-dynload/_sqlite3.so' 

Compruebe que el directorio está en su sys.path:

>>> import sys; print(filter(lambda p: 'lib-dynload' in p, sys.path)) 
['/usr/lib/python2.6/lib-dynload'] 
10

Python 2.6 detecta que el sqlite3 los encabezados de desarrollo están instalados, y omitirán silenciosamente b Uilding _sqlite3 si no está disponible. Si está compilando desde el origen, instale sqlite3, incluidos los encabezados de desarrollo. En mi caso, sudo yum install sqlite-devel resolvió esto en un CentOS 4.7. Luego, reconstruya Python desde el código fuente.

+0

favor aclarar qué significa 'reconstruir Python desde el código fuente'. Gracias –

0

¿Eso soluciona su problema?

Python 2.5.4 (r254:67916, May 31 2009, 16:56:01) 
[GCC 4.3.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named sqlite 
>>> import sqlite3 
>>> 
0

El 2.5.5. Puerto Mac de Python 2.5 ahora tiene esta pista:

"py25-sqlite3 @2.5.4 (python, databases) 
    This is a stub. sqlite3 is now built with python25" 

Y así una mejora del puerto Python25 a python25 @2.5.5_0 hizo el trabajo de importación. Dado que sqlite3 se encuentra entre las dependencias de python25, , se construye de nuevo al actualizar python25. Por lo tanto,

$ sudo port upgrade python25 

hace el truco en Mac OS X, colección de ports.

0

Me encuentro con el mismo problema. Pasos a resolver.

  1. Descargue la última versión de sqlite3 del sitio web sqlite. sqlite-autoconf *
  2. Instalar que en 3 sencillos pasos
    1. ./configure
    2. hacen
    3. make install
  3. reconstruir el pitón hacen hacen instalar