GeoDjango - FileNotFoundError:找不到模块 'C:\OSGeo4W in\gdal304.dll'(或其依赖项之一)

问题描述 投票:0回答:2

我正在尝试安装 GeoDjango,结果比我想象的要难得多。在我的 64 位 Windows 10 系统上安装 OSGeo4W 后,我在 settings.py 文件中设置了所有内容,但现在我收到此错误:

FileNotFoundError: Could not find module 'C:\OSGeo4W\bin\gdal304.dll' (or one of its dependencies). Try using the full path with constructor syntax.

我也设置了

GDAL_LIBRARY_PATH
但它不起作用。

GDAL_LIBRARY_PATH = "C:\\OSGeo4W\\bin\\gdal304.dll"

这是我的

C:\OSGeo4W\bin
路径,如您所见,
gdal304.dll
文件就在那里

我的 Python 版本是 3.10.6 Django 的版本是 4.1

我已经试着自己解决了一个星期,但慢慢地我不知道该怎么做

python django geodjango
2个回答
0
投票

我也遇到了这个问题,因为我今天更新了我的旧 GEO Django 安装程序。

您可以按照其他人的建议使用 Docker Image,但我更喜欢本地解决方案,因为我不想每次开始编码时都启动 Docker。

您的解决方案在括号中:(或其依赖项之一)

你可以从

gdal304.dll
中查找传递依赖。有几个工具可以做到这一点(见这里)。我现在在这里使用 Git 集成的 MinGW - 已安装
ldd
的 Shell。 Windows 上任何(较新的)Git 安装都应该是这种情况。

如您所见,您的操作系统已经填充了一些依赖项。其他缺失的,必须从 OSGeo4W 中补充。如果将其与 OSGeo4W 中的

bin
目录进行比较,您将看到问题:

遗憾的是,简单的“重命名”并不能解决问题。我很幸运,还没有删除我的旧 OSGeo4W 版本。在旧文件中,我找到了必要的 DLL。

所以,长话短说:您需要

jpeg.dll
文件。

有像“windll.com”或“dll-files.com”这样的网站,但我推荐使用它们。我不信任这些网站。您可以安装“MSYS2”、“Cygwin”甚至“MVSC”之类的东西,安装“libjpeg-turbo”库,然后最后复制并粘贴必要的 DLL 文件。

在 libjpeg-turbo 的官方网站上也有建议:https://libjpeg-turbo.org/Documentation/OfficialBinaries

但这对于只想拥有 DLL 文件的人来说似乎需要做很多工作,但话又说回来:切勿盲目地从 Internet 下载库并将其加载到您的应用程序中。这些图书馆可以做些什么!


0
投票

这是我的 hacky 解决方法,我希望它能帮助别人。根据@

SimpleJack
的回答,使用 MINGW、CYGWIN 安装程序尝试寻找干净的jpeg.dll 文件后,我找不到它就放弃了。

现在,完全安装OSGeo4W后,您会在bin文件夹中看到

 gdal30x.dll
我刚刚做的是将
gdal304.dll
重命名为其他名称
,说
gdal304.dll.orig
这样它就被完全跳过了。

Django 在系统上找不到损坏的文件时继续工作。

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