在 OS X 上安装 Spatialite for python (GeoDjango)

2023-11-26

我正在费尽心思地尝试安装 Spatialite for GeoDjango!

我已经在使用 Homebrew,它通常很简单且方便,所以我最初尝试遵循自制说明对于 GeoDjango。

但这无法安装任何数据库,即 Spatialite。下一步是尝试安装 Spatialite 本身,但 Django 文档没有提供特定于 Homebrew 的说明。

I found 本教程看起来很完美 - Spatialite for GeoDjango 的 Homebrew 和 virtualenv 友好安装。

但这不起作用...看来我的pysqlite与 OS X 附带的非空间启用版本的 SQLite 链接,而不是我从 Homebrew 安装的空间化版本,当 Django 尝试连接到数据库时,我收到此错误:

“pysqlite 库不支持 C 扩展加载。SQLite 和 pysqlite 都必须配置为允许加载扩展才能使用 SpatiaLite。”

pysqlite的作者尚未回复我在 Github 上请求帮助我还没有通过谷歌找到任何东西。

所以我回到绘图板并决定遵循“Mac OS X 特定说明”在 GeoDjango 文档中...通过从 KyngChaos 二进制包安装各种 geo 库。

文档说“按照上面列出的顺序安装软件包”,但我发现我无法安装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

目前还不太确定出了什么问题。

还有别人这里就这样谁走了 KyngChaos 路线,最后却得到了同样的结果“SQLite 和 pysqlite 都必须配置为允许加载扩展”无论如何,我从 Homebrew 路线得到了错误。

I found 这张票#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

(brew 报告我有现有版本,我取消了它们的链接并安装了最新版本,如上所述)

然后编辑setup.cfg注释掉#define=SQLITE_OMIT_LOAD_EXTENSION并指定路径:

include_dirs=/usr/local/opt/sqlite/include
library_dirs=/usr/local/opt/sqlite/lib

在我想要安装的地方激活 virtualenv,然后

python setup.py build
python setup.py install

(build_static仍然失败clang: error: no such file or directory: 'sqlite3.c')

(也许我应该这样做pip install .正如 github 问题中所建议的那样)

now the spatialite geodjango.db "SELECT InitSpatialMetaData();"成功,尽管有一个可忽略的错误:

InitSpatiaMetaData() error:"table spatial_ref_sys already exists"

即可能甚至不需要运行该命令

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OS X 上安装 Spatialite for python (GeoDjango) 的相关文章

随机推荐

  • 类型错误:无法读取未定义的属性(读取“$router”)vuejs

    因此 如果 api 调用返回状态 422 我尝试将用户重定向到不同的路线 但我收到错误 TypeError Cannot read properties of undefined reading router 我的routes js pat
  • 将 PySpark 数据帧列的聚合值存储到变量中

    我在这里使用 PySpark 数据框 test1 是我的 PySpark 数据帧 event date 是 TimestampType 因此 当我尝试获取 event date 的不同计数时 结果是一个整数变量 但是当我尝试获取同一列的最大
  • 为什么 Visual Studio 在第二次调试会话之前不会命中断点?

    通过 TEST 菜单或右键单击上下文菜单调试单元测试时 在对当前 C 测试类进行代码更改后 VS2013 始终会忽略单元测试中的断点 第二次调试会导致断点被命中 我怀疑这与VS2013的新功能 保持测试执行引擎运行 有关 您可以通过 TES
  • Google Protocol Buffers:C++ 的 parseDelimitedFrom 和 writeDelimitedTo

    抱歉再次问这个问题 但是我们能否一劳永逸地发布一些与 Java 函数匹配的 C 函数 它们似乎没有被谷歌添加 并且自己编写它们是相当痛苦的 下面的答案使用了一些this and this 这是带有 boost asio 的两个基本版本 请注
  • django 信号总是同步的吗?

    我正在开发一个 django IPN 插件 它将 IPN 数据保存到模型中 然后调用 post save 信号 我担心在这种用例 gunicorn gevent 等 下信号可能会异步调用 完成 IPN 经常向 iPN url 发送超过 1
  • 拖放跨域、iframe、浏览器窗口

    感谢 stackoverflow 我解决了很多 javascript 问题 但现在我没有希望就停在了这一点 很难描述 有清晰的视频显示了我拖放跨域 iframe 的问题 http www youtube com watch v v65mO2
  • SQL Server 的 mysql_real_escape_string 替代品[重复]

    这个问题在这里已经有答案了 我想知道 PHP 中 SQL Server 转义字符串的等效项是什么 好问题 我不知道 但你可以使用PDO quote 与PDO DBLIB driver EDIT 似乎this guy 从 StackOverf
  • 为什么“while true”会使用100%的CPU资源?

    我在 Linux 服务器上运行了以下 Java 代码 while true int a 1 2 导致其中一个CPU核心达到100 使用率 我对此感到困惑 因为我了解到CPU通过时间分割来处理任务 这意味着CPU将在一个时隙内执行一项任务 C
  • 将 MDB 转换为 CSV [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一个 MS Access mdb 文件 我需要将其转换为 CSV 文件 我该怎么做 请不要向我指出任何免费软件 提前致谢 另一个有用的工具是 mdbtools http mdbt
  • 如何捕获此错误:“注意:未定义的偏移量:0”

    我想捕获这个错误 a 1 jfksjfks try b a 0 catch Exception e echo jsdlkjflsjfkjl Edit 事实上 我在以下行中收到此错误 parse xml gt children 0 gt ch
  • SSIS 2012 使用项目部署模型将值从子包传递到父包

    我正在使用新的项目部署模型 我有一个名为 ETL 的主包 我的 ETL 包所做的第一件事是运行一个名为 get SFTP files 的包 如图所示 在获取 SFTP 文件中 foreach 循环获取 ClientID 我如何将此值传递回父
  • 如何在 Android Studio 中创建我自己的“重新格式化代码”样式?

    在 Eclipse 中 窗口 gt 首选项 gt Java gt 代码样式 gt 格式化程序 有一个工具可以创建我自己的格式样式并将其应用到代码中 有没有办法在 Android Studio 中做到这一点 对于 Java 代码 要更改格式化
  • 有类似 C 语言的 STL(矢量、地图...)之类的库吗? [复制]

    这个问题在这里已经有答案了 可能的重复 C 容器类 库 有没有好的C语言集合库 在 C 中 您有一个非常有用的标准模板库 STL 它具有向量 映射 集合等结构 如果我使用纯 C 是否有任何库提供类似的结构 函数 Thanks glib是一个
  • 如何更改 Spring Boot 中允许的标头

    我目前正在使用 Auth0 和 Angular 2 GUI 它发送以下类型的标头 x xsrf token 在对 Spring Boot API 的请求中 我收到错误 XMLHttpRequest 无法加载http localhost 30
  • 使用 Zend_Auth 保护所有控制器

    我如何全局保护我的所有控制器 除了我的登录控制器 以确保我的应用程序在所有点都是安全的 没有ajax调用的隐藏后门等 我想我可以把它放在我的引导文件中 但这感觉不对 我试图避免向每个控制器添加任何代码 建议 edit 这是对 singles
  • 检查字符串是否仅包含字母+空格?

    我想编写一个传递字符串的静态方法 并检查该字符串是否仅由字母和空格组成 我可以根据需要使用 String 的方法 length 和 charAt i 我在想类似以下的事情 对伪代码感到抱歉 public static boolean onl
  • Google Drive Android API (GDAA) getResourceId() 返回 null(计时问题)

    当测试时删除 垃圾箱中讨论的功能SO 22295903 我遇到了这个问题 1 创建一个包含内容的文件 GoogleApiClient gac DriveFile createFileWait DriveFolder fldr String
  • Imagick - 无法从 URL 读取图像文件。

    我使用此片段来读取不同网站上的图像 image new Imagick http lp hm com hmprod set key source value model 2012 P01 05156 06204 80 1175 4 jpg
  • 检查变量是否为 SRE_Match

    我需要检查变量是否是正则表达式匹配对象 print type m 返回类似的内容 lt sre SRE Match object at 0x000000000345BE68 gt 但是当我导入时 sre并尝试执行type m is SRE
  • 在 OS X 上安装 Spatialite for python (GeoDjango)

    我正在费尽心思地尝试安装 Spatialite for GeoDjango 我已经在使用 Homebrew 它通常很简单且方便 所以我最初尝试遵循自制说明对于 GeoDjango 但这无法安装任何数据库 即 Spatialite 下一步是尝