我正在構建我的第一個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