在Django中使用OSGeo4W的GDAL时libcurl.dll错误

时间:2018-12-08 12:00:27

标签: django gdal geodjango osgeo

我正在尝试在我的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 \ bin \ gdal202.dll

还有一个错误找不到序号,其中包含 libcurl.dll (由OSGeo4W作为依赖项安装):

  

序号361不能位于动态链接库中    .. \ osgeo4w64 \ bin \ libcurl.dll

和python引发错误:

  

[WinError 182]操作系统无法运行%1


我做什么

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

我尝试下载最新的Windows二进制版本的libcurl并替换为libcurl,但是随后出现了python引发的另一个错误:

  

[WinError 126]找不到指定的模块

我还检查了我的curl二进制文件的arch是x64(与python和OSGeo4W相同)。

希望有人能提供帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

在带有Django和PyCharm的Windows上,我开始收到与您以前的错误之一相同的错误,如下所述:

过程入口点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. 使用依赖项加载gdal203.dll并查找sql​​ite3_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地狱,部分归因于PyCharm的Runnerw64.exe用于挂接调试器。