【发布时间】:2013-12-28 15:08:19
【问题描述】:
我正在为 GeoDjango 安装 Spatialite!
我已经在使用 Homebrew,它通常简单方便,所以我最初尝试关注 Homebrew instructions 获取 GeoDjango。
但这没有安装任何数据库,即 Spatialite。下一步是尝试安装 Spatialite 本身,但 Django 文档没有提供特定于 Homebrew 的说明。
我发现 this tutorial 看起来很完美 - 为 GeoDjango 安装的 Spatialite 的 Homebrew 和 virtualenv 友好型。
但它不起作用...看来我的pysqlite 与 OS X 附带的非空间启用版本的 SQLite 相关联,而不是我从 Homebrew 安装的空间化版本,我当 Django 尝试连接到数据库时出现此错误:
“pysqlite 库不支持 C 扩展加载。SQLite 和 pysqlite 都必须配置为允许加载扩展才能使用 SpatiaLite。”
pysqlite 的作者没有回复my pleas for help on Github 也没有通过谷歌找到任何东西。
所以我回到绘图板并决定遵循 GeoDjango 文档中的"Mac OS X-specific instructions"...通过安装 KyngChaos 二进制包中的各种地理库。
文档说“按照上面列出的顺序安装软件包”,但我发现如果不先安装 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
目前还不确定是什么问题。
还有其他人 here on SO 走上了 KyngChaos 路线,结果却是相同的“SQLite 和 pysqlite 都必须配置为允许加载扩展” 我从无论如何都是自制路线。
我发现 this ticket #17756 为 Django 添加了 pyspatialite 支持 - pyspatialite 应该是 pip install 一切的更简单方法,但不幸的是它也不起作用(请参阅票底部的 cmets)。
我有点不情愿开始尝试从源代码手动构建所有内容,因为我可能会再次遇到同样的问题,但要花费数小时在 Google 上搜索有关神秘编译器错误、魔术标志和路径等的信息一路走来。
我准备放弃,只使用 Postgres/PostGIS。
【问题讨论】:
标签: django sqlite geodjango pysqlite spatialite