"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 位。
具有各种答案的同一问题的其他线程:
- Getting a working SpatiaLite + SQLite system for x64 c#
- https://gis.stackexchange.com/questions/85674/sqlite-python-2-7-and-spatialite
这是 Python 3:
在 virtualenv 中(几乎)安装 SpatiaLite 的方法
- 下载cyqlite a special SQLite build with R-Tree enabled. It is required by GoeDjango.
- 下载 mod_spatialite(Windows 二进制文件位于页面底部的粉红色框中)即
mod_spatialite-[version]-win-x86.7z
- 将 mod_spatialite 文件解压缩(展平树并忽略存档中的文件夹)到 virtuelenv
Scripts
文件夹中。
这部分我不喜欢,但如果不涉及主要 Python3 安装,我找不到可行的解决方案。
- 重命名或以其他方式备份
c:\Python35\DLLs\sqlite3.dll
- 从
cyqlite
uznip sqlite3.dll
文件进入 c:\Python35\DLLs\
如何在 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 libspatialite
和 sudo yum install libspatialite-devel
之后]).
我正在尝试让 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 位。
具有各种答案的同一问题的其他线程:
- Getting a working SpatiaLite + SQLite system for x64 c#
- https://gis.stackexchange.com/questions/85674/sqlite-python-2-7-and-spatialite
这是 Python 3:
在 virtualenv 中(几乎)安装 SpatiaLite 的方法- 下载cyqlite a special SQLite build with R-Tree enabled. It is required by GoeDjango.
- 下载 mod_spatialite(Windows 二进制文件位于页面底部的粉红色框中)即
mod_spatialite-[version]-win-x86.7z
- 将 mod_spatialite 文件解压缩(展平树并忽略存档中的文件夹)到 virtuelenv
Scripts
文件夹中。
这部分我不喜欢,但如果不涉及主要 Python3 安装,我找不到可行的解决方案。
- 重命名或以其他方式备份
c:\Python35\DLLs\sqlite3.dll
- 从
cyqlite
uznipsqlite3.dll
文件进入c:\Python35\DLLs\
如何在 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 libspatialite
和 sudo yum install libspatialite-devel
之后]).