Python中的spaceite的Sqlite load_extension失败

Map*_*sis 10 python sqlite spatialite

我正在尝试使用Spatialite beta版本3.0,因为我在64位计算机上使用Windows 7.

sqlite3.OperationalError: The specified module could not be found.尝试加载时始终遇到可怕的错误 libspatialite-4.dll.

我尝试过以下方法:

  • put libspatialite-4.dll和所有其他dll在同一个文件夹中
  • 使用dll的完整路径
  • 将dll位置添加到'PATH'环境变量
  • 将dll位置作为Python代码的一部分附加到sys.path属性
  • 复制c:\windows\system32文件夹中的所有dll (完成重启机器)
  • 复制c:\windows\sysWoW64文件夹中的所有dll (完成重启机器,这应该是32位dll,但我还是尝试过)

我的代码如下:

import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-4.dll")')
Run Code Online (Sandbox Code Playgroud)

注意 - 我也试过了完整的路径而没有运气.我记得在Windows XP 32位上遇到了同样的问题.我得到它的工作,但不记得我做了什么:(

UPDATE

我已经在32位Windows 7上测试了设置,并将所有dll放在System32文件夹中.因此,这表明64位设置存在一些问题.可能是我需要另一个版本的MSVC(我不认为Spatialite网站说哪个是必要的,所以我可能只需要猜测 - 我安装了MSVC2010)?

Cas*_*ona 2

我遇到了同样的问题,这让我困惑了好几天。我在 Windows 7(x64) 上运行 Python 2.6(32 位),因此它可能与您的设置不同。

您可以尝试以下方法(摘自此Google 网上论坛帖子):

  1. 将spatialite dll(libgeos_c-1.dll、libgeos-3-0-0.dll、libproj-0.dll 和libspatialite-2.dll)放入C:/ 驱动器上的文件夹中。
  2. 将此文件夹添加到您的路径中。

问题似乎是由于用户权限设置,Windows 可能无法从 C:\Windows\system32 加载 dll。