2009-11-25 9 views
5

Continúo teniendo problemas para configurar una instalación de GeoDjango que utiliza Spatialite como un backend en una máquina con Windows.Obteniendo GeoDjango + Spatialite ejecutándose en Windows

Utilicé el instalador GeoDjango y descargué las bibliotecas precompiladas desde http://www.gaia-gis.it/spatialite/binaries.html, y las volqué en mi directorio geodjango/bin.

Actualicé mi instalación pysqlite2 a la versión más nueva, de modo que las extensiones se pueden cargar y especifiqué SPATIALITE_LIBRARY_PATH en mi archivo de configuración.

Cuando corro manage syncdb Me da la siguiente salida

 
C:\stuff>manage.py syncdb 
SpatiaLite version ..: 2.3.1 Supported Extensions: 
     - 'VirtualShape'  [direct Shapefile access] 
     - 'VirtualText'   [direct CSV/TXT access] 
     - 'VirtualNetwork  [Dijkstra shortest path] 
     - 'RTree'    [Spatial Index - R*Tree] 
     - 'MbrCache'   [Spatial Index - MBR cache] 
     - 'VirtualFDO'   [FDO-OGR interoperability] 
     - 'SpatiaLite'   [Spatial SQL - OGC] 
PROJ.4 Rel. 4.6.1, 21 August 2008 
GEOS version 3.0.2-CAPI-1.4.2 

Sin embargo, cuando la creación de los índices de la tabla me sale el siguiente mensaje:

 
... 
Installing custom SQL for core.LocationHint model 
updateTableTriggers: "no such module: rtree" 
... 

Traté de ignorar el mensaje, sin embargo, mis modelos no se guardarían correctamente.

Estoy un poco desconcertado, porque parece que se usa la biblioteca Spatialite y tiene habilitada la extensión "RTree", pero sigo recibiendo el mensaje de error. No hay mucha información disponible sobre este error en línea; Encontré la documentación de RTree en sqlite.org/rtree.html, sin embargo, tenía la impresión de que ya está incluida en spatialite porque se escucha en "extensiones admitidas".

¿Realmente necesito compilar mi propia biblioteca sqlite? ¿Alguien puede proporcionar un .dll que ya tenga incluido RTree? ¿Estoy haciendo algo completamente mal? Cualquier ayuda es apreciada, gracias!

+0

Olvidaste versiones: Python 2.6.4 en Windows7 32 Django Trunk SpatiaLite 2.3.1 – Hans

Respuesta

1

Hans, spatialite es una extensión de SQLITE3.

SQLite3 debe compilarse específicamente con esta opción, y a menudo no es así. Por ejemplo, la versión predeterminada en mac does no está compilada con RTREE. Sin embargo, creo que sqlite3 debería incluirse a través de su instalación de python & pysqlite usando quizás la versión original de sqlite3 u otra versión.

puede probar, sqlite3.version para ver qué versión está utilizando python.

También tenga en cuenta, hay que volver a instalar el módulo pysqlite con las opciones de configuración correctas es decir, antes de ejecutar setup.py instalar, cambiar el setup.cfg:

[build_ext] 
#define= 
include_dirs=PATH_TO_INCLUDE 
library_dirs=PATH_TO_LIBS 
libraries=sqlite3 
#define=SQLITE_OMIT_LOAD_EXTENSION 

http://www.gaia-gis.it/spatialite/install-windows.html

+0

Gracias por la aclaración. Por alguna razón, tenía la impresión de que spatialite también contiene la biblioteca estándar de sqlite. He descargado la última versión del pysqlite, cambió el setup.cfg acuerdo con su sugerencia y luego trataron de ejecutar 'install' build_static setup.py (según las instrucciones del readme pysqlite), y me da el siguiente resultado:

 running build_static running build_py running build_ext Downloading amalgation. Extracting sqlite3.c Extracting sqlite3.h building 'pysqlite2._sqlite' extension error: Unable to find vcvarsall.bat 
Hans

+0

por lo que sé este vcvarsall.bat es parte de Visual Studio de Microsoft. No poseo este software y no tengo experiencia con él, así que ahora busco versiones precompiladas de Sqlite que tengan incluida la extensión rtree. Si tiene dicho archivo, o puede proporcionar ayuda para encontrar uno, se lo agradecerá enormemente. – Hans

+0

Hola Hans, sí, creo que la configuración de pysqlite intenta compilar sqlite3 ... y debe requerir Visual Studio. No he utilizado una máquina de Windows por un tiempo, así que realmente no puedo ayudarte en ese sentido. Pude conseguir la configuración spatialite + geodjango en ubuntu bastante fácilmente (mucho más fácil que en un mac) – ismail

1

Gracias por señalar Issy yo en la dirección correcta.

El problema era, de hecho, que pysqlite creó un binario sqlite, que no tenía habilitada la extensión R * TREE.

Me puse en contacto con los desarrolladores de pysqlite (ver link text), quienes respondieron muy rápidamente haciéndome saber, que a partir de la versión 2.5.6, "futuros binarios de Windows y compilaciones con --build-static tendrán soporte RTree por defecto. "

Problema resuelto. Gracias a todos.

Cuestiones relacionadas