在Django中使用OSGeo4W的GDAL时,libcurl.dll出现错误。

问题描述 投票:3回答:1

我试图在我的Django项目中安装GeoDjango,却在GDAL上出现了奇怪的错误。

按照Django文档,我使用OSGeo4W64安装了GDAL、GEOS、PROJ,具体来说,这些包是我在OSGeo4W64设置中选择安装的。

  • gdal v2.3.2-2
  • geos v3.7.0-1
  • proj v5.2.0-1

我也按照文档的要求设置了环境变量。


我得到的错误是

起初,当我开始我的Django项目时(使用了 runserver),python试图寻找 gdal202.dll 并提出错误 未找到入口点:

存储过程入口点 sqlite3_column_origin_name 无法在动态链接库中找到。.../osgeo4w64/bingdal202.dll。

还有一个错误 未找到序号libcurl.dll (OSGeo4W作为依赖项安装)。

在动态链接库中找不到序数361。 ...\osgeo4w64\binlibcurl.dll

和python引发错误。

[WinError 182] 操作系统不能运行 %1


我做了什么

我通过降级解决了第一个错误 gdal 版本为 gdal201.dll 但还是不知道如何解决第二个错误。

我试着下载了最新的Windows二进制版本的libcurl,并替换成,但我又收到了另一个由python引发的错误。

[WinError 126] The specified module could not be found(找不到指定的模块)

我也检查了我的curl二进制的arch是x64(和我的python和OSGeo4W一样)。

希望有人能帮忙,非常感谢。

django gdal geodjango osgeo
1个回答
0
投票

在Windows w Django和PyCharm上,我开始收到和你之前的一个一样的错误,如下所述。

存储过程入口点sqlite3_column_origin_name无法在动态链接库C:\\Program Files\GDAL\gdal203.dll中找到。

对我有效的短篇小说解决方案

重新命名。"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\DLLs\sqlite3.dll "改为sqlite3.dll.bak。

我使用了两个工具来帮助我解决这个问题

用于纠正的步骤

  1. 使用Dependencies加载gdal203.dll,查找sqlite3_column_origin_name使用的是哪个DLL。
  2. 使用Process Explorer确定哪个sqlite3.dll正在被加载到内存中(欢迎来到DLL-hell)。在我的例子中,它在 "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\DLLs "中。
  3. 使用依赖关系来检查Visual Studio中的sqlite3.dll。
  4. 退出PyCharm,把Visual Studio DLL sqlite3.dll.bak重新命名,强迫它按照我的PATH顺序加载。谁知道我这样做还会无意中弄坏什么。未来的我可能会因此而恨我。

从新安装Windows 10开始,接着安装PyCharm、Django、GeoDjango......根据我的经验,没有实质性的故障排除是不行的。我想一部分是来自DLL-hell,另一部分是由于PyCharm的runnerw64.exe用来钩入调试器。

© www.soinside.com 2019 - 2024. All rights reserved.