【问题标题】:Geodjango can't find GDAL while Python canGeodjango 找不到 GDAL 而 Python 可以
【发布时间】:2017-03-19 10:20:29
【问题描述】:

我遵循了GeoDjano GDAL Windows Post 中提到的所有讨论和步骤,但陷入了另一个问题,我无法为 GeoDjango 获取 GDAL。

Python 控制台(C:\Python27) 中,我可以 import gdal 但 GeoDjano 在 gdal.HAS_GDAL 下说 FALSE 查询 gdal.HAS_GDAL em>Django/GeoDjango Apps Shell 并在涉及 GDAL 的任何几何操作上出错,例如country.geom.geojson 产生:

GEOSException: GeoJSON output only supported when GDAL is installed

我将 Python2.7 安装为 C:\Python27,路径环境变量包含:

C:\Python27\; C:\Python27\bin; C:\Python27\scripts; C:\Program Files\GDAL;

和其他环境变量为:

GDAL_DATA         C:\Program Files\GDAL\gdal-data
GDAL_DRIVER_PATH  C:\Program Files\GDAL\gdalplugins
GDAL_LIBRARY_PATH C:\Program Files\GDAL

还尝试将GDAL_LIBRARY_PATH="C:\\Program Files\\GDAL" 放入settings.py,但没有奏效。

我正在使用 Windows 7 Ultimate x64、Python 2.7.3、Django 1.5.1 并尝试安装/重新安装 GDAL 和 Python GDAL 绑定二进制文件。

【问题讨论】:

    标签: django python-2.7 windows-7-x64 gdal geodjango


    【解决方案1】:

    由于 Windows 环境变量设置不正确,Python 未检测到 GDAL 安装。

    我只能放弃OSGeo4w并使用GDAL and MapServer来解决这个问题。

    您只需要编辑 libgdal.py(如 Roberto Ribeiro 所说,如果您使用的是 GDAL 版本 2.x 并且可能不是您的情况

    【讨论】:

      【解决方案2】:

      问题在于 django 如何调用 GDAL 模块:它从可能的 DLL(gdal111、gdal110、gdal19 等)的有限列表中查找 GDAL 路径中的特定 GDAL DLL。

      问题是,根据您安装 GDAL 的二进制文件,它可能有不同的 DLL 名称。例如,Gohlke 的二进制文件生成一个“gdal201.dll”,它不在 django 列表中。因此,它找不到它。

      您需要做的是,首先在您的 GDAL 安装中找到 DLL 的名称(应该是您的 GDAL 文件夹中最大的文件大小),然后将其添加到位于 ..\ 的 libgdal.py 列表中Python27\lib\site-packages\django\contrib\gis\gdal\libgdal.py

      列表在第 26 行,应该是这样的: lib_names = ['gdal111', 'gdal110', 'gdal19', 'gdal18', 'gdal17']

      ...或它的一些变体,取决于您的 django 版本。只需将您的 DLL 名称添加到列表中,就可以了。

      【讨论】:

        猜你喜欢
        • 2018-02-28
        • 2021-12-14
        • 2020-02-12
        • 1970-01-01
        • 2017-06-30
        • 2018-08-14
        • 1970-01-01
        • 2022-07-11
        • 2022-10-18
        相关资源
        最近更新 更多