GeoDjango在Windows 10中找不到GDAL库

9

我正在使用Windows 10上的Django 11.4版本,在尝试迁移我的模型时遇到了问题。我收到了以下错误:

django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal201", "gdal20", "gdal111", "gdal110", "gdal19")

我按照GeoDjango的安装说明进行了安装(https://docs.djangoproject.com/en/1.11/ref/contrib/gis/install/),但仍然遇到问题。我在这个错误上找到的所有信息都建议改变系统环境变量。
我安装了OSGe4W,并添加了GDAL_DATA = C:\OSGeo4W\share\gdal和PROJ_LIB= C:\OSGeo4W\share\proj两个环境变量。
我不确定还有什么可以尝试的,希望得到更多见解。

你尝试设置了吗?GDAL_LIBRARY_PATH - Ajay M
你最终解决了这个问题吗? - ziggy
4个回答

7

我通过编辑%PYTHONPATH%\Lib\site-packages\django\contrib\gis\gdal目录下的libgdal.py文件并在第26行添加str('gdal202')来解决了这个问题。

 lib_names = [str('gdal201'), str('gdal202'), str('gdal111'), str('gdal110'), str('gdal19')]

根据您使用的GDAL版本不同,您可能需要添加不同的版本号。


你是如何安装GDAL的? - ziggy
@ziggy,这些指令很简单:https://docs.djangoproject.com/en/1.11/ref/contrib/gis/install/#windows - sean.hudson
这对我很有帮助!还有这个链接也非常有用 https://gis.stackexchange.com/questions/246556/installing-geodjango-dependencies-on-windows-10-or-windows-server-2012-r2 - ziggy
这个解决了Windows上缺少的“gdal303”问题。谢谢分享,只可惜它过于侵入性了! - jlandercy
如果未定义PYTHONPATH,请尝试查找文件夹:C:\Users\John Doe\AppData\Local\Programs\Python\Python310\Lib\site-packages\django\contrib\gis\gdal - Roland

2

我曾经遇到过同样的问题,对我来说问题出在我更新搜索GDAL库所用的PATH环境变量之前已经启动了cmd shell。我只需要重新启动shell,一切就可以正常工作。


1

这个解决方案百分之百有效。如果你还没有尝试过,请试一试。

首先,从Christoph Gohlke's Unofficial Windows Binaries for Python Extension Packages下载GDAL wheel。

确保通过在终端中打开Python来检查您的Python版本。 您将看到如下输出:

Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

在上述行中,Python版本为3.8.5,且为32位。因此,我将需要从链接中选择的软件包是'GDAL-3.3.3-cp38-cp38-win32.whl'。您应该以类似的方式进行选择。
完成后,只需运行以下命令即可:
pip install whl/GDAL-3.3.3-cp38-cp38-win32.whl

安装GDAL之后,将以下代码粘贴到您的settings.py文件中

import os
if os.name == 'nt':
    VENV_BASE = os.environ['VIRTUAL_ENV']
    os.environ['PATH'] = os.path.join(VENV_BASE, 'Lib\\site-packages\\osgeo') + ';' + os.environ['PATH']
    os.environ['PROJ_LIB'] = os.path.join(VENV_BASE, 'Lib\\site-packages\\osgeo\\data\\proj') + ';' + os.environ['PATH']

然后你就可以开始了。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接