4 votos

Configuración del acceso a la base de datos espacial para Python 2.6.6

Estoy trabajando en un proyecto SIG, y me gustaría implementar y poner a prueba algunas de geo-espacial de los algoritmos en Python. Para este propósito, no solamente la necesidad de sqlite, pero también spatialite, con el fin de almacenar y consultar la ubicación de los datos. Ahora he tratado de instalar el pyspatialite paquete, pero no importa qué versión de Python he probado (he probado todas las versiones de 2.6 a 3.3), el pip sigue insistiendo, que ninguno de los existentes pyspatialite paquetes son compatibles con mi versión de Python.

Si trato de hacerlo con easy_install, puedo obtener una traza y un error:

AttributeError: MSVCCompiler instance has no attribute 'compiler'

Y que también se produce, si trato de instalar el paquete de forma manual, mediante la ejecución de la setup.py archivo.

A partir de lo que ya he buscado, algunas personas sugieren que para conectarse a una base de datos spatialite de alguna manera el uso de sqlite y cargar la extensión, pero, francamente, no tengo idea de cómo hacerlo, y no podía entender de ninguna de estas respuestas. Voy a estar muy agradecido si alguien de aquí es capaz de proponer una solución, de una manera clara, paso a paso, como no soy un experimentado programador Python todavía. Gracias de antemano.

ACTUALIZACIÓN:

Otro intento, esta vez con Python 3.3.5. El código siguiente:

import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-2.dll")')

rendimientos:

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    conn.execute('SELECT load_extension("libspatialite-2.dll")')
sqlite3.OperationalError: %1 is not a valid Win32 application.

Y de nuevo, no me parece para resolver esto por mi cuenta. Realmente estoy atascado aquí, y poco a poco están acabando las ideas. Si usted puede hacer el trabajo en cualquier versión de Python, yo estaría MUY aliviado.

#

ACTUALIZACIÓN #2

Lo sentimos, el error anterior se debió a algo más, he vuelto a instalar Python y pysqlite, y estamos de vuelta con el viejo error. Hay dos opciones ahora:

1) puedo compilar el uso de pysqlite2 de importación dbapi2 como sqlite3. En este caso el código es el siguiente:

from pysqlite2 import dbapi2 as sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("DLLs\\libspatialite-4.dll")')
curs = conn.cursor()

En ese caso, el error es:

Traceback (most recent call last):
  File "C:\Users\mszydlowski\Desktop\Project\sqlite.py", line 3, in <module>
    conn.enable_load_extension(True)
AttributeError: 'pysqlite2.dbapi2.Connection' object has no attribute  'enable_load_extension' 

2) compilar mediante la importación de sqlite3. En este caso el código es el siguiente:

import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("DLLs\\libspatialite-4.dll")')
curs = conn.cursor()

Y el error:

Traceback (most recent call last):
  File "C:\Users\mszydlowski\Desktop\Project\sqlite.py", line 4, in <module>
    conn.execute('SELECT load_extension("DLLs\\libspatialite-4.dll")')
OperationalError: The specified module could not be found.

aunque el archivo es, sin duda, y me hizo uso de la doble barra invertida, como yo ya estaba advertido.

Alguna idea?

1voto

GreyCat Puntos 146

Como he dicho, , usted necesita un Unix como compilador de C y las fuentes de SQLite para construir e instalar la dependencia de las bibliotecas (AttributeError: MSVCCompiler instancia no tiene ningún atributo 'compilador') y Windows no tiene nativa compiladores como Linux o Mac OS X, pero se puede intentar, mira Construir pyspatialite en Windows, o la Instalación de Pyspatialite en Windows, por ejemplo.

Usted no necesita Pyspatialite para conectarse a Spatialite a través de Python. Usted puede utilizar la versión más reciente de Pysqlite, mira especiales de la biblioteca de python necesarias para spatialite? o incluso el sqlite3 módulo estándar de Python. Usted puede descargar un Pysqlite versión para Windows en Christoph Gohlke la no oficial de Windows los archivos Binarios para Python Paquetes de Extensión

0voto

gappy3000 Puntos 211

La versión de sqlite3.dll incluido con Python no parecen querer jugar bien con Spatialite. La única cosa que podía llegar a su trabajo (corto de compilar todo de la fuente) fue:

  1. Descargar SQLite (o cyqlite - una recompilación de SQLite para Windows con algunas características útiles habilitado, tales como el R-Tree, de modo que usted puede hacer spaital índices), es decir, sqlite-dll-win32-x86-[version].zip
  2. Descargar mod_spatialite (Windows los archivos binarios en el cuadro rosa en la parte inferior de la página), es decir, mod_spatialite-[version]-win-x86.7z
  3. Descomprimir primero SQLite/cyqlite luego mod_spatialite en la misma carpeta (sobrescribir si hay conflictos)
  4. Agregar esta carpeta a la Ruta de acceso del sistema
  5. Cambiar el nombre de la sqlite3.dll que está en su Python Dll directorio, para que Python va a utilizar el nuevo uno en el camino

Ver esta entrada del blog para más información.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X