Запускаем GeoDjango + Spatialite в Windows

У меня по-прежнему возникают проблемы с настройкой установки GeoDjango, использующей Spatialite в качестве серверной части на компьютере с Windows.

Я использовал установщик GeoDjango и загрузил предварительно скомпилированные библиотеки с http://www.gaia-gis.it/spatialite/binaries.html и сбросил их в мой каталог geodjango/bin.

Я обновил свою установку pysqlite2 до новейшей версии, чтобы можно было загружать расширения, и указал SPATIALITE_LIBRARY_PATH в файле настроек.

Когда я запускаю manage syncdb, я получаю следующий вывод

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

Однако при настройке индексов для таблицы я получаю следующее сообщение:

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

Я пытался проигнорировать сообщение, однако мои модели не сохранялись правильно.

Я немного сбит с толку, потому что библиотека Spatialite, кажется, используется и имеет расширение «RTree», но я все еще получаю сообщение об ошибке. В Интернете не так много информации об этой ошибке; Я нашел документацию RTree по адресу sqlite.org/rtree.html, однако у меня сложилось впечатление, что она уже включена в пространственный объект, потому что она находится в списке «поддерживаемых расширений».

Мне действительно нужно скомпилировать собственную библиотеку sqlite? Может ли кто-нибудь предоставить .dll, в который уже включен RTree? Я делаю что-то совершенно неправильно? Любая помощь приветствуется, спасибо!


person Hans    schedule 25.11.2009    source источник
comment
Забытые версии: Python 2.6.4 на Windows7 32 Django Trunk Spatialite 2.3.1   -  person Hans    schedule 26.11.2009


Ответы (2)


Ганс, spaceite — это расширение SQLITE3.

SQLite3 должен быть специально скомпилирован с этой опцией, а часто это не так. Например, версия по умолчанию для Mac не компилируется с RTREE. Однако я думаю, что sqlite3 должен быть включен, хотя ваша установка python и pysqlite могут использовать исходную версию sqlite3 или другую версию.

вы можете попробовать sqlite3.version, чтобы увидеть, какая версия используется python.

Также обратите внимание, что вам необходимо переустановить модуль pysqlite с правильными параметрами конфигурации, т.е. перед запуском установки setup.py измените 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

person ismail    schedule 26.11.2009
comment
Спасибо за разъяснения. По какой-то причине у меня сложилось впечатление, что spaceite также содержит стандартную библиотеку sqlite. Я загрузил последнюю версию pysqlite, изменил setup.cfg в соответствии с вашим предложением, а затем попытался запустить setup.py build_static install (как указано в файле readme pysqlite), и я получил следующий вывод: . Извлечение sqlite3.c Извлечение sqlite3.h при сборке ошибки расширения 'pysqlite2._sqlite': невозможно найти vcvarsall.bat ‹/pre› - person Hans; 26.11.2009
comment
насколько я знаю, этот vcvarsall.bat является частью Microsoft Visual Studio. У меня нет этого программного обеспечения и у меня нет опыта работы с ним, поэтому теперь я ищу предварительно скомпилированные версии Sqlite, в которые включено расширение rtree. Если у вас есть такой файл или вы можете помочь найти его, мы будем очень благодарны. - person Hans; 26.11.2009
comment
Привет, Ганс, да, я думаю, что установка pysqlite пытается скомпилировать sqlite3... и для этого требуется Visual Studio. Я давно не пользовался машиной с Windows, поэтому я не могу вам помочь в этом отношении. Мне удалось довольно легко получить настройку spaceite + geodjango на Ubuntu (намного проще, чем на Mac) - person ismail; 26.11.2009
comment
Я добавил ссылку на некоторые подробности об установке в Windows. - person ismail; 26.11.2009

Спасибо Исси за то, что указали мне правильное направление.

Проблема действительно заключалась в том, что pysqlite создал двоичный файл sqlite, в котором не было включено расширение R * TREE.

Я связался с разработчиками pysqlite (см. текст ссылки), который очень быстро ответил, сообщив мне, что, начиная с версии 2.5.6, «будущие бинарные файлы и компиляции Windows с --build-static будут иметь поддержку RTree по умолчанию».

Проблема решена. Спасибо всем.

person Hans    schedule 26.11.2009