Ane*_*pic 9 sqlite django pysqlite geodjango spatialite
我正在试图为GeoDjango安装Spatialite!
我已经在使用Homebrew了,它通常很简单方便,所以我最初尝试按照Homebrew的说明操作 GeoDjango.
但这不会安装任何数据库,即Spatialite.下一步是尝试安装Spatialite本身,但Django docs没有提供特定于Homebrew的指令.
我发现这个教程看起来很完美 - 一个Homebrew和virtualenv友好的Spatialite for GeoDjango安装.
但它不起作用......似乎我pysqlite与OS X附带的非空间启用的SQLite版本相关联,而不是我从Homebrew安装的Spatial-ised版本,我在Django尝试时遇到此错误连接到db:
"pysqlite库不支持C扩展加载.必须配置SQLite和pysqlite以允许加载扩展以使用SpatiaLite."
pysqlite的作者没有回应我在Github上寻求帮助的请求,我没有通过谷歌找到任何东西.
所以我回到绘图板并决定遵循GeoDjango文档中的"Mac OS X特定指令" ......通过安装KyngChaos二进制包中的各种地理库.
该文件说"在他们上面列出的顺序安装软件包",但我发现我不能安装UnixImageIO,而无需安装PROJ第一.下载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
Run Code Online (Sandbox Code Playgroud)
在这一点上不确定是什么问题.
SO上有其他人已经走过了KyngChaos路线并且最终得到了相同的"两个SQLite和pysqlite必须配置为允许加载扩展"错误我从Homebrew路线得到了无论如何.
我发现这张票#17756用于添加pyspatialite对Django的支持 - pyspatialite应该是一种更简单的方式来处理pip install所有事情但不幸的是它也不起作用(请参阅对票底的评论).
我有点不愿意开始尝试从源头开始构建所有内容,因为我似乎可能会再次遇到同样的问题,但花费数小时谷歌搜索有关神秘的编译器错误,魔术标志和路径等的信息.
我准备放弃,只使用Postgres/PostGIS.
我现在可以使用此处的提示来完成此工作:
https://github.com/ghaering/pysqlite/issues/60#issuecomment-50345210
我不确定它是否使用修复它的真实路径,或者只是 Homebrew 小桶或底层软件包已更新并且现在安装干净。不过,现在它仍然有效。
我在下面重现了我所采取的步骤:
brew update
brew install sqlite # 3.8.5
brew install libspatialite # 4.2.0
brew install spatialite-tools # 4.1.1
git clone https://github.com/ghaering/pysqlite.git
cd pysqlite
Run Code Online (Sandbox Code Playgroud)
(brew 报告我有现有版本,我取消了它们的链接并安装了最新版本,如上所述)
然后编辑setup.cfg以注释掉#define=SQLITE_OMIT_LOAD_EXTENSION并指定路径:
include_dirs=/usr/local/opt/sqlite/include
library_dirs=/usr/local/opt/sqlite/lib
Run Code Online (Sandbox Code Playgroud)
在我想要安装的地方激活 virtualenv,然后
python setup.py build
python setup.py install
Run Code Online (Sandbox Code Playgroud)
(build_static仍然失败clang: error: no such file or directory: 'sqlite3.c')
pip install .(也许我应该按照 github问题中的建议做)
现在spatialite geodjango.db "SELECT InitSpatialMetaData();"成功了,尽管有一个可忽略的错误:
InitSpatiaMetaData() error:"table spatial_ref_sys already exists"
即可能甚至不需要运行该命令
| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |