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?