“无法找到SpatiaLite库。” Django的

时间:2016-09-30 09:04:26

标签: python django sqlite spatial geodjango

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

SPATIALITE_LIBRARY_PATH = 'mod_spatialite'

产生此错误:

  

django.core.exceptions.ImproperlyConfigured:无法加载   SpatiaLite库扩展名“mod_spatialite”因为:指定的   无法找到模块。

我也试过这样做:

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:无法找到   SpatiaLite图书馆。确保它在您的库路径中,或设置   您设置中的SPATIALITE_LIBRARY_PATH。

谢谢..

5 个答案:

答案 0 :(得分:3)

有趣的是,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文件,所以它有点误导。

http://www.gaia-gis.it/gaia-sins/

下载

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

关于同一问题的其他线索以及各种答案:

答案 1 :(得分:0)

这是如何在Python 3的virtualenv中安装SpatiaLite(几乎):

  1. 下载cyqlite启用了R-Tree的特殊SQLite版本。它是required by GoeDjango
  2. 下载mod_spatialite(Windows二进制文件位于页面底部的粉红色框中),即mod_spatialite-[version]-win-x86.7z
  3. 解压缩mod_spatialite文件(展平树并忽略存档中的文件夹)到virtlenv Scripts文件夹中。
  4. 这部分我不喜欢但我没有触及主要的Python3安装就找不到可行的解决方案。

    1. 重命名或以其他方式备份c:\Python35\DLLs\sqlite3.dll
    2. cyqlite uznip sqlite3.dll文件到c:\Python35\DLLs\
    3. 荣誉:https://gis.stackexchange.com/a/169979/84121

答案 2 :(得分:0)

在Ubuntu18.04上,  添加SPATIALITE_LIBRARY_PATH = 'mod_spatialite.so' 安装了libsqlite3-mod-spatialite的计算机对我有用。

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

答案 3 :(得分:0)

尝试在AWS Elastic Beanstalk上部署GeoDjango时遇到了这个问题。原来,我需要将SPATIALITE_LIBRARY_PATH = 'mod_spatialite.so'设置为SPATIALITE_LIBRARY_PATH = 'libspatialite.so'(从我的sudo yum install libspatialite运行sudo yum install libspatialite-devel.ebextensions之后,安装在/user/lib64/libspatialite.so中)。

答案 4 :(得分:-1)

如何在WINDOWS操作系统中激活正确的DJANGO环境中的正确空间,如7,8,10

我希望我的答案能够让我的开发人员朋友安全地使用django默认提供的Sqlite来管理他们的地理数据,这是一个扩展,默认情况下也是在python(3或+)中提供的。我从一个预先配置的虚拟环境开始。首先要做的是下载两个zip:sqlite-dll-win32-x86-[version].zipmod_spatialite-[version]-win-x86.7z并在同一目录中解压缩(如果有任何冲突,则覆盖)

将所有以前解压缩的文件复制到您的目录中并将其粘贴到虚拟环境的Scripts目录中

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