在 Windows 上对 SQLite 使用 spatialite 扩展

Use spatialite extension for SQLite on Windows

我知道以前有人以类似的方式问过这个问题。但是,我发现的所有问题都涉及一些非常具体的系统设置,这些设置不适用于我(因为我也是)。

系统:

如何激活“sqlite3”模块的 spatialite 扩展?

我试过的方法(其他类似问题的人说它有效的方式):

然后,运行

import sqlite3

conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-2.dll")')

给予

conn.execute("SELECT load_extension('libspatialite-2.dll')")
sqlite3.OperationalError: The specified module could not be found.

我还可以尝试什么来完成这项工作?

您的 PATH 中可能没有放置 libspatialite-2.dll 的文件夹。 也许您可以从 Python 脚本中添加文件夹(我不知道任何 Python)。 或者您可以从 Windows 属性界面添加它。

顺便说一句,您使用的是非常旧版本的 spatialite:请在此处查看更新版本: https://www.gaia-gis.it/fossil/libspatialite/index

我最近在使用 mod_spatialite.dll Spatialite 5.0.1、Python 3.8(使用 Anaconda)和 Windows 10 时遇到了这个问题。我通过以下步骤解决了这个问题:

  1. 已安装 OSGeo4W;
  2. 已将 OSGeo4W64\bin 中的所有文件和文件夹复制到 anaconda3\Library\bin 没有 替换现有文件,因为这可能会破坏 Python 安装)。我事先备份了这个文件夹,这样我就可以撤消所有内容,以防出现问题;
  3. 已将 mod_spatialite.dll(我已经下载)复制到 anaconda3\Library\bin

我认为我遇到这个问题的原因是因为缺少递归 dll 依赖项;因为只是获取直接依赖项(通过 dumpbin /dependents mod_spatialite.dll)并将它们复制到 anaconda3\Library\bin 文件夹并没有解决问题,所以我得出的结论是我缺少某个依赖项的依赖项。鉴于所有依赖项都已经整齐地放置在 OSGeo4W64\bin 中,从那里复制所有内容为我解决了它。