我使用Windows7开发GeoDjango应用程序,我的Python版本是3.3。按照Django文档中的步骤,我安装了Postgresql9.1和Postgis扩展。然后,当我安装gdal库时,有一个问题。我从
安装gdalhttp://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 site-package文件夹中安装了一个'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'
它仍然不起作用,错误信息与以前一样。
有人能指出我的出路吗?
答案 0 :(得分:1)
问题已经解决,我使用了
中接受的答案Unable to install Python and GDAL (DLL load failed)
它工作,我之前做的是重命名我的OSGeo4W文件夹(即删除它们)。现在Django能够从django.contrib.gis找到gdal。