3

我正在尝试在我的 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并引发错误Entry Point Not Found

过程入口点 sqlite3_column_origin_name 无法在动态链接库中找到...\osgeo4w64\bin\gdal202.dll

还有一个错误Ordinal Not Found with libcurl.dll(由 OSGeo4W 作为依赖项安装):

序数 361 无法在动态链接库中 找到..\osgeo4w64\bin\libcurl.dll

和python引发错误:

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


我做了什么

我通过降级gdal版本修复了第一个错误,gdal201.dll但仍然无法弄清楚如何解决第二个错误。

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

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

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

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

4

1 回答 1

2

在带有 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. 使用 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. 使用 Dependencies 从 Visual Studio 检查 sqlite3.dll
  4. 退出 PyCharm 并重命名 Visual Studio DLL sqlite3.dll.bak 以强制它根据我的 PATH 顺序加载一个。谁知道我这样做可能无意中破坏了什么。未来的我可能会因此而恨我。

从新安装 Windows 10 开始,然后安装 PyCharm、Django、GeoDjango ......根据我的经验,如果没有大量故障排除,它将无法工作。我认为部分来自 DLL-hell,部分原因是 PyCharm 的 runnerw64.exe 用于挂钩调试器。

于 2020-05-11T22:33:30.560 回答