我正在构建我的第一个GeoDjango项目,但我有点绝望。libgeos_c-1.dll无法由Python加载
我在Windows上通过一键式安装程序安装了PostgreSQL 9和PostGis 1.5。所以在那里。我在settings.py中将GEOS_LIBRARY_PATH设置为libgeos_c-1.dll的完整路径。但是当我运行manage.py syncdb时,遇到以下错误:
File "C:\Python25\lib\site-packages\django\contrib\gis\geometry\backend\geos.py", line 1, in <module>
from django.contrib.gis.geos import \
File "C:\Python25\Lib\site-packages\django\contrib\gis\geos\__init__.py", line 6, in <module>
from django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex
File "C:\Python25\Lib\site-packages\django\contrib\gis\geos\geometry.py", line 14, in <module>
from django.contrib.gis.geos.coordseq import GEOSCoordSeq
File "C:\Python25\Lib\site-packages\django\contrib\gis\geos\coordseq.py", line 9, in <module>
from django.contrib.gis.geos.libgeos import CS_PTR
File "C:\Python25\lib\site-packages\django\contrib\gis\geos\libgeos.py", line 51, in <module>
lgeos = CDLL(lib_path)
File "C:\Python25\lib\ctypes\__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found
因此,我打开libgeos.py并检查指定的行。这只是一个简单的“CDLL(lib_path)”。显然lib_path是GEOS_LIBRARY_PATH。
所以我创建了一个简单的测试:
from ctypes import CDLL
lgeos = CDLL('libgeo's path')
仍然有同样的问题。所以它根本无法使用CDLL来使用python加载这个DLL。在这个阶段,我不知道该怎么做。请帮忙。
,则无需粘贴确切路径通过从spatialite站点抓取libgeos库并将这两个DLL解包到system32来解决。 – 2010-10-27 00:32:57
也许这是另一种解决方案。我猜在Windows上最新的libgeo版本有一些问题? – 2010-11-04 16:51:18
我刚安装了OSGeo4W并解决了它。 – 2011-05-18 19:00:23