我一直在尝试为GeoDjango安装Spatialite,但是遇到了很多问题。
我已经在使用Homebrew了,它通常很容易和方便,所以我最初尝试遵循GeoDjango的Homebrew说明。
但这并没有安装任何数据库,即Spatialite。下一步是尝试安装Spatialite本身,但是Django文档没有提供任何特定于Homebrew的说明。
我找到了这篇文章,看起来非常完美-可以为GeoDjango安装Homebrew和virtualenv友好的Spatialite。
但是它不起作用...似乎我的pysqlite
链接到的是OS X附带的非空间启用版本的SQLite,而不是我从Homebrew安装的空间化版本,当Django尝试连接到数据库时,我会收到以下错误:
"The pysqlite library does not support C extension loading. Both SQLite and pysqlite must be configured to allow the loading of extensions to use SpatiaLite."
pysqlite的作者没有回应我的Github请求,我也没有在Google上找到任何有用的信息。
所以我回到原点,决定遵循GeoDjango文档中的"Mac OS X-specific instructions",通过从KyngChaos二进制包中安装各种地理库来安装Spatialite。
文档说“按照上面列出的顺序安装软件包”,但是我发现我无法在不先安装PROJ
的情况下安装UnixImageIO
。文档中下载Spatialite二进制文件的链接(http://www.gaia-gis.it/spatialite-2.3.1/binaries.html)已经失效了,因此我改用KyngChaos的"Spatialite Tools v4.1"。
进行到下一步时,我遇到了以下错误:
$ spatialite geodjango.db "SELECT InitSpatialMetaData();"
SQLite header and source version mismatch
2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a
2013-09-03 17:11:13 7dd4968f235d6e1ca9547cda9cf3bd570e1609ef
目前我不是很确定问题出在哪里。
这里的某个人也采用了KyngChaos的方法,并最终遇到了与我从Homebrew方法中得到的相同的错误提示“Both SQLite and pysqlite must be configured to allow the loading of extensions”。
我发现这个票 #17756为Django添加pyspatialite
支持 - pyspatialite
应该是使用pip install
安装所有东西的更简单的方法,但不幸的是它也无法工作(请参见票底部的评论)。
我有点不愿意开始尝试手动构建所有内容,因为我觉得我很可能会再次遇到相同的问题,同时还要花费数小时搜索有关神秘编译器错误、魔法标志和路径等信息。
我已经准备放弃,只使用Postgres/PostGIS。