我正在使用python 3.4,postgres 9.3.5,Windows 7。
我按照这个尝试让GeoDjango工作: https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#windows
当我尝试将django.contrib.gis添加到已安装的应用程序(在pycharm中)时,或者当我尝试运行时
以下是追溯。
但是,在这个目录中 C:\ Python34 \ LIB \站点包\ Django的\的contrib \ GIS \ GEOS geometry.py(其中包含GEOSGeometry类)和error.py(其中包含GEOSException类)。
当我在python shell中运行它时,它不会抛出任何错误:
>>> from django.contrib.gis.geos.error import GEOSException
感谢您对问题的看法。 一堆其他的追溯,然后:
File "C:\Python34\lib\site-packages\django\contrib\gis\forms\fields.py", line
8, in <module>
from django.contrib.gis.geos import GEOSException, GEOSGeometry
ImportError: cannot import name 'GEOSException'
更新 我发现了一些建议我应该更新项目设置的信息:
GEOS_LIBRARY_PATH = r'C:\Program Files\OSGeo4W64\bin\geos_c.dll'
这很有效,但现在我得到了WinError 126
File "C:\Python34\lib\site-packages\django\contrib\gis\forms\fields.py", line
8, in <module>
from django.contrib.gis.geos import GEOSException, GEOSGeometry
File "C:\Python34\lib\site-packages\django\contrib\gis\geos\__init__.py", line
9, in <module>
from .libgeos import geos_version, geos_version_info # NOQA: flake8 detects
only the last __all__
File "C:\Python34\lib\site-packages\django\contrib\gis\geos\libgeos.py", line
61, in <module>
lgeos = CDLL(lib_path)
File "C:\Python34\lib\ctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found
我不清楚无法找到哪个模块,也不知道如何修复它。
答案 0 :(得分:3)
我能够解决问题。看看我在这里做了什么:
Django forum with how I fixed it
抱歉,此错误消息不明确。我已经提交了一张改进的机票 它:https://code.djangoproject.com/ticket/23873
错误消息的原因是您没有安装 您
sys.path
上的GEOS可导入的。 (那是什么 在 https://docs.djangoproject.com/en/1.7/ref/contrib/gis/install/#osgeo4w 或者以下步骤无法正常工作。)如果你查看django / contrib / gis / geos / init .py,你会看到 如果HAS_GEOS为True,则仅导入GEOSException。这就是为什么 如果您将从django.contrib.gis.geos导入GEOSException将成功 安装了GEOS,否则失败。
至于win 126
错误:
我不确定究竟是什么帮助最终修复它但是:
GEOS_LIBRARY_PATH
C:\ program files \ OSGeo4W \ bin \ geos_c.dll
但我应该补充一下:
C:\ OSGeo4W \ bin \ geos_c.dll
现在,我可以从项目设置中删除GEOS_LIBRARY_PATH
,但事情仍然有效,所以我猜它一定是64位与32位问题,或路径问题。