【问题标题】:When configuring Geodjango, gdal1.10 and python3.3 are incompatible on Windows7在配置 Geodjango 时,gdal 1.10 和 python3.3 在 Windows 7 上不兼容
【发布时间】:2023-10-06 09:56:01
【问题描述】:

我正在使用 Windows7 开发 GeoDjango 应用程序,我的 Python 版本是 3.3。按照 Django 文档中的步骤,我安装了 Postgresql9.1 和 Postgis 扩展。然后我在安装gdal库的时候,就出现了问题。我从

安装 gdal
http://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 

它说它具有所有必需的文件。但对我来说,我无法正确设置它。我用

测试它

from django.contrib.gis import gdal

并提示如下错误:

>>> from django.contrib.gis import gdal
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\python33\lib\site-packages\django\contrib\gis\gdal\__in
it__.py", line 41, in <module>
    from django.contrib.gis.gdal.driver import Driver
  File "C:\Program Files\python33\lib\site-packages\django\contrib\gis\gdal\driv
er.py", line 5, in <module>
    from django.contrib.gis.gdal.prototypes import ds as capi
  File "C:\Program Files\python33\lib\site-packages\django\contrib\gis\gdal\prot
otypes\ds.py", line 8, in <module>
    from django.contrib.gis.gdal.libgdal import lgdal
  File "C:\Program Files\python33\lib\site-packages\django\contrib\gis\gdal\libg
dal.py", line 47, in <module>
    lgdal = CDLL(lib_path)
  File "C:\Program Files\python33\lib\ctypes\__init__.py", line 353, in __init__

    self._handle = _dlopen(self._name, mode)
OSError: [WinError 193] %1 is not a valid Win32 application。
>>>

于是我查看了python3.3中的libgdal.py文件,发现gdal1.10没有lib名称,如下代码:

elif os.name == 'nt':
    # Windows NT shared libraries
    lib_names = ['gdal19', 'gdal18', 'gdal17', 'gdal16', 'gdal15']

所以我把它改成

elif os.name == 'nt':
    # Windows NT shared libraries
    lib_names = ['gdal110', 'gdal19', 'gdal18', 'gdal17', 'gdal16', 'gdal15']

我这样做是因为我发现 gdal 在我的 python 站点包文件夹中安装了一个“gdal110.dll”文件。

C:\Program Files\python33\Lib\site-packages\osgeo

但是,这个修改也不起作用。

然后我尝试将此行添加到我的 Django 的 settings.py 中。

GDAL_LIBRARY_PATH = 'C:\Program Files\python33\Lib\site-packages\osgeo\gdal110.dll'

还是不行,错误信息和以前一样。

谁能指出我的出路?

【问题讨论】:

  • @cgohlke 我实际上已经删除了 OSGeo4W 安装的文件夹,有没有办法追踪冲突和我没有找到的任何遗留文件?我其实也试过删除lfd...pythonlibs安装的文件夹,重新安装OSGeo4W,但还是一样的错误信息。

标签: python django postgis gdal geodjango


【解决方案1】:

问题已经解决,我使用了来自

的接受的答案

Unable to install Python and GDAL (DLL load failed)

我在此之前所做的是重命名我的 OSGeo4W 文件夹(即删除它们)。现在 Django 可以从 django.contrib.gis 中找到 gdal。

【讨论】:

    最近更新 更多