7

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

系统:

  • 视窗 7 64 位
  • Python 3.4 64 位
  • sqlite3 2.6.0(我猜是 Python 附带的)
  • Spatialite Windows 二进制文件 2.3.1(还有什么重要的吗?)

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

我尝试了什么(类似问题的其他人说它的工作方式):

  • https://www.gaia-gis.it/spatialite-2.3.1/binaries.html下载:
    • libspatialite-win-x86-2.3.1.zip
    • proj-win-x86-4.6.1.zip
    • geos-win-x86-3.1.1.zip
    • libiconv-win-x86-1.9.2.zip
  • 将它们全部解压缩到 C:\ 上的同一文件夹中
  • (也尝试只将 DLL 放入该文件夹)
  • 将该文件夹放入我的系统 PATH 变量中

然后,运行

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.

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

4

2 回答 2

6

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

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

于 2015-01-12T19:11:37.940 回答
0

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

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

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

于 2021-06-07T15:21:44.137 回答