"Unable to locate the SpatiaLite library." 姜戈

"Unable to locate the SpatiaLite library." Django

我正在尝试让 Django 的 SQLite3 接受空间查询。 This tutorial 建议我将其添加到设置中:

SPATIALITE_LIBRARY_PATH = 'mod_spatialite'

产生此错误的原因:

django.core.exceptions.ImproperlyConfigured: Unable to load the SpatiaLite library extension "mod_spatialite" because: The specified module could not be found.

我也试过这样做:

SPATIALITE_LIBRARY_PATH = r'C:\Program Files (x86)\Spatialite\mod_spatialite-4.3.0a-win-x86\mod_spatialite-4.3.0a-win-x86\mod_spatialite.dll'

如果我不添加这个变量,我会在迁移时收到这个错误:

django.core.exceptions.ImproperlyConfigured: Unable to locate the SpatiaLite library. Make sure it is in your library path, or set SPATIALITE_LIBRARY_PATH in your settings.

谢谢..

有趣的是,5 天后我遇到了同样的问题。经过一番摸索后,我开始工作了:

设置

SPATIALITE_LIBRARY_PATH = 'mod_spatialite'

并将 mod_spatialite-x.x.x-win-x86.7z 中的所有 DLL 文件提取到您的 Python 安装目录。 dll 显然需要与 python.exe 位于同一文件夹中。另外,根据您的 python 安装,我认为 mod_spatialite 包需要 32/64 位。如果您缺少某些 dll,无论缺少什么 dll 文件,您都会得到相同的错误 "specified module not found",所以这有点误导。

下载自http://www.gaia-gis.it/gaia-sins/

我使用 mod_spatialite 稳定版 4.3.0a x86 和 Python 3.5.2 32 位。

具有各种答案的同一问题的其他线程:

这是 Python 3:

在 vi​​rtualenv 中(几乎)安装 SpatiaLite 的方法
  1. 下载cyqlite a special SQLite build with R-Tree enabled. It is required by GoeDjango.
  2. 下载 mod_spatialite(Windows 二进制文件位于页面底部的粉红色框中)即 mod_spatialite-[version]-win-x86.7z
  3. 将 mod_spatialite 文件解压缩(展平树并忽略存档中的文件夹)到 virtuelenv Scripts 文件夹中。

这部分我不喜欢,但如果不涉及主要 Python3 安装,我找不到可行的解决方案。

  1. 重命名或以其他方式备份c:\Python35\DLLs\sqlite3.dll
  2. cyqlite uznip sqlite3.dll 文件进入 c:\Python35\DLLs\

荣誉:https://gis.stackexchange.com/a/169979/84121

如何在 WINDOWS 操作系统如 7、8、10

中的虚拟 DJANGO 环境中正确激活 SPATIALITE

我希望我的回答能保护我的开发者朋友们的安全,他们使用 Django 默认提供的 Sqlite 来通过 spatialite link 管理他们的地理数据,这是 [=] 中默认提供的扩展21=](3 或 +)。我从您有一个预配置的虚拟环境这一事实开始。首先要做的是下载两个zip:sqlite-dll-win32-x86-[version].zip and mod_spatialite-[version]-win-x86.7z并在同一目录下解压(如果有冲突则覆盖)

将所有先前解压缩的文件复制到您的目录中,并将它们粘贴到您的虚拟环境的脚本目录中

如有必要,全部重启您的电脑,停用并重新激活您的虚拟环境和代码...

在 Ubuntu 18.04 上,添加 SPATIALITE_LIBRARY_PATH = 'mod_spatialite.so' 安装 libsqlite3-mod-spatialite 对我有用。

注意:答案有 mod_spatialite,而对我来说 mod_spatialite.so 有效。

我 运行 在尝试在 AWS Elastic Beanstalk 上部署 GeoDjango 时遇到了这个问题。结果我需要将 SPATIALITE_LIBRARY_PATH = 'mod_spatialite.so' 设置为 SPATIALITE_LIBRARY_PATH = 'libspatialite.so'(安装在 /user/lib64/libspatialite。所以在我的 [=14= 运行 sudo yum install libspatialitesudo yum install libspatialite-devel 之后]).