gpt4 book ai didi

python-2.7 - 带有 Python 2 和 3 的 Spatialite

转载 作者:IT王子 更新时间:2023-10-29 06:29:26 24 4
gpt4 key购买 nike

我正在尝试在 Windows 7 上将 spatialite 与 Python 2 和 3 一起使用。

与其尝试为 Python 3 修补 pyspatialite,我决定使用 load_extension 方法和 sqlite3 Python 内置包,类似如何在这里完成:Sqlite load_extension fail for spatialite in Python在这里:Use spatialite extension for SQLite on Windows .

但是,在官方 (C)Python 2.7 安装程序中,load_extension 因与 MacOS 相关的问题而被禁用。这不是 Python 3.4 的对应项。此外,这两个安装程序都是在没有SQLITE_ENABLE_RTREE=1(我也想拥有)的情况下构建的。

起初,对于 Python 2.7,解决方法是构建 pysqlite,调整设置文件以同时具有 R*Tree 和扩展。这种方式不适用于 Python 3,因为当前的 setup.py 似乎不支持它。据我了解,这是因为该包已移至核心 Python 存储库:https://github.com/ghaering/pysqlite/issues/72#issuecomment-94319589

我目前的解决方案是使用 sqlite3 包所需的设置重新构建 Python 2.7 和 3.4。它起作用了,我能够加载 spatialite 作为扩展并创建 R*Tree。

是否存在替代更简单的解决方案?有人通过处理 pyspatialitepysqlitesetup.py 找到了替代解决方案吗?

最佳答案

我刚刚开始使用一个更简单的解决方案。我使用默认的 sqlite3 包和 Spatialite 4.3 运行带有 Python 3.5 的 Windows 10。

我是这样做的:

让我们从加载 spatialite 扩展(我们尚未安装)的简单程序开始:

import sqlite3

with sqlite3.connect(":memory:") as conn:
conn.enable_load_extension(True)
conn.load_extension("mod_spatialite")

如果你运行这个程序你会得到:

C:\> python test.py
Traceback (most recent call last):
File "test2.py", line 5, in <module>
conn.load_extension("mod_spatialite")
sqlite3.OperationalError: The specified module could not be found.

这意味着它找不到 mod_spatialite 扩展。我们从Spatialite website下载吧.在底部有指向“MS Windows 二进制文件”的链接。我选择了 x86 版本,当前的稳定版本,并下载了名为 mod_spatialite-4.3.0a-win-x86.7z 的文件。将该文件解压缩到您的 test.py 文件所在的同一目录,现在运行该程序不会产生任何错误(即它可以工作!):<​​/p>

C:\> python test.py
C:\>

关于python-2.7 - 带有 Python 2 和 3 的 Spatialite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com