2009-11-25 5 views
5

Continuo ad avere problemi nella configurazione di un'installazione di GeoDjango che utilizza Spatialite come back-end su una macchina Windows.Ottenere GeoDjango + Spatialite in esecuzione su Windows

Ho utilizzato il programma di installazione GeoDjango e scaricato le librerie precompilate da http://www.gaia-gis.it/spatialite/binaries.html e le ho scaricate nella directory geodjango/bin.

Ho aggiornato l'installazione di pysqlite2 alla versione più recente, in modo che sia possibile caricare estensioni e ho specificato SPATIALITE_LIBRARY_PATH nel mio file di impostazioni.

Quando eseguo manage syncdb ricevo il seguente output

 
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 

Tuttavia, durante l'impostazione degli indici per la tabella ottengo il seguente messaggio:

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

ho cercato di ignorare il messaggio, tuttavia i miei modelli non salveranno correttamente.

Sono un po 'sconcertato, perché la libreria Spatialite sembra essere utilizzata e ha l'estensione "RTree" abilitata, ma ricevo comunque il messaggio di errore. Non ci sono molte informazioni su questo errore disponibili online; Ho trovato la documentazione RTree su sqlite.org/rtree.html, tuttavia ho avuto l'impressione che sia già inclusa in spatialite perché è elencata in "estensioni supportate".

Ho davvero bisogno di compilare la mia libreria sqlite? Qualcuno può fornire una .dll che include già RTree? Sto facendo qualcosa di completamente sbagliato? Qualsiasi aiuto è apprezzato, grazie!

+0

dimenticato versioni: Python 2.6.4 su Windows 7 a 32 Django Tronco SpatiaLite 2.3.1 – Hans

risposta

1

Hans, spatialite è un'estensione di SQLITE3.

SQLite3 deve essere specificamente compilato con questa opzione, e spesso non lo è. Ad esempio, la versione di default su mac non è compilata con RTREE. Comunque penso che sqlite3 dovrebbe essere incluso anche se la tua installazione python & pysqlite forse usa la versione originale di sqlite3 o un'altra versione.

puoi provare, sqlite3.version per vedere quale versione viene utilizzata da python.

notare, è necessario reinstallare il modulo pysqlite con le opzioni di configurazione corrette vale a dire prima di eseguire l'installazione setup.py, modificare il setup.cfg anche:

[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

Grazie per il chiarimento. Per qualche motivo ho avuto l'impressione che anche spatialite contenga la libreria sqlite standard. Ho scaricato l'ultima versione di pysqlite, cambiato il setup.cfg secondo il vostro suggerimento e poi ha tentato di eseguire 'setup.py install' build_static (secondo le istruzioni del readme pysqlite), e ottengo il seguente output:

 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

per quanto ne so questo vcvarsall.bat fa parte di Microsoft Visual Studio. Non possiedo questo software e non ne ho esperienza quindi ora sto cercando versioni precompilate di Sqlite che includano l'estensione rtree. Se si dispone di tale file, o può fornire qualsiasi aiuto trovarne uno, sarà molto apprezzato. – Hans

+0

Ciao Hans, sì, penso che l'installazione di pysqlite cerchi di compilare sqlite3 ... e deve richiedere Visual Studio. Non ho usato una macchina Windows in un momento quindi non posso davvero aiutarti in merito. Sono riuscito a ottenere l'installazione di spazialite + geodjango su ubuntu abbastanza facilmente (molto più facile che su un mac) – ismail

1

Grazie Issy per il puntamento io nella giusta direzione.

Il problema era in effetti, che pysqlite ha creato un binario sqlite, che non aveva l'estensione R * TREE abilitata.

Ho contattato gli sviluppatori di pysqlite (vedere link text), che mi ha risposto molto rapidamente facendomi sapere che dalla versione 2.5.6 in poi, "I futuri binari di Windows e le compilazioni con --build-static avranno il supporto RTree per impostazione predefinita. "

Problema risolto. Ringrazia tutti.