我正在建立我的第一个GeoDjango项目,但我有点绝望。
我在Windows上通过一键安装程序安装了PostgreSQL 9和PostGis 1.5。所以那里就是一切。我将GEOS_LIBRARY_PATH设置为settings.py中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来加载这个dll与python。在这个阶段,我不知道该怎么做。请帮忙。
答案 0 :(得分:3)
在设置GEOS_LIBRARY_PATH变量之后使用doble'\'slashes对我来说很有用,但现在启动此错误'module'对象没有属性'OSMGeoAdmin'
答案 1 :(得分:2)
我通过Windows安装程序安装Postgresql 9.1和postgis 2.0后遇到了同样的问题。无需下载任何其他内容。您所要做的就是将此目录添加到Windows路径中:C:\PostgreSQL\9.1\bin
或libgeos_c-1.dll
文件所在的位置。如果希望新环境变量对IDE生效,则可能需要重新引导。对于命令行,只需打开一个新的命令提示符。
这样做会使GEOS_LIBRARY_PATH
设置为可选,因为所需文件已经在Windows路径中。
这可能不适用于2010年的OP,但对于其他在2012年遇到同样问题的人来说,这可能是最简单的解决方案。
答案 2 :(得分:1)
我想到了不同的事情,最明显的是:你确实在那里粘贴了DLL文件的路径,而不仅仅是它所在的文件夹?没有冒犯意味着,只是为了安全起见。
然后,如果存在未解析的依赖项,您可能也会收到此错误,即DLL的LoadLibrary失败,因为它缺少它所依赖的另一个库。您可以使用Dependency Walker轻松找到它。使用depends加载libgeos并查找缺少的模块,错误消息等。例如,您可能缺少libgeos-X-Y-Z.dll。
答案 3 :(得分:0)
这里的问题相同。您是否可以如此善良地分享正确的DLL?如果那确实解决了问题。或者是以唯一的方式安装OSGeo4W?如果是这样,你遵循了什么安装程序?
答案 4 :(得分:0)
我有同样的问题并通过以下方式解决:
C:\OSGeo4W64\
)添加以下行:
GEOS_LIBRARY_PATH ='C:\ OSGeo4W64 \ bin \ geos_c.dll'
到 settings.py
(以下回答:https://stackoverflow.com/a/21495785/2314737)
official documentation中也提到了这一点:
当GeoDjango找不到GEOS时,会出现此错误:
ImportError:找不到GEOS库(尝试过“geos_c”)。尝试 在您的设置中设置
GEOS_LIBRARY_PATH
。最常见的解决方案 是正确配置您的库环境设置或设置 在您的设置中GEOS_LIBRARY_PATH
。