“无法找到SpatiaLite库。” Django的

Sei*_* E. 4 python sqlite django spatial geodjango

我正在尝试使Django的SQLite3接受空间查询。本教程建议将其添加到设置中:

SPATIALITE_LIBRARY_PATH = 'mod_spatialite'
Run Code Online (Sandbox Code Playgroud)

产生此错误:

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'
Run Code Online (Sandbox Code Playgroud)

如果不添加此变量,则在迁移时会收到此错误:

django.core.exceptions.ImproperlyConfigured:无法找到SpatiaLite库。确保它在您的库路径中,或在设置中设置SPATIALITE_LIBRARY_PATH。

谢谢..

Mat*_*den 6

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

SPATIALITE_LIBRARY_PATH = 'mod_spatialite'
Run Code Online (Sandbox Code Playgroud)

并将所有DLL文件从mod_spatialite-xxx-win-x86.7z提取到您的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位一起使用。

关于同一问题的其他主题有各种各样的答案:

  • 我花了几个小时,所以谢谢!自2019年7月9日起,您的解决方案在Python 3.7.3上仍然有效。另外,我使用的是`conda`而不是`venv` (2认同)