我使用的是Python3.4,Postgres9.3.5,Windows7。
我就这样试着让吉德扬戈工作:
https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#windows
当我试图将django.contrib.gis添加到已安装的应用程序时(在pycharm中),或者当我试图运行
下面是回溯。
但是,在这个目录中
C:\ Python34\Lib\site packages\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'

很有效,但现在我得到了一个酒杯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

我不清楚是什么模块找不到,也不知道如何修复。

最佳答案

我能解决这个问题。看看我在这里做了什么:
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错误:
我不确定到底是什么帮助最终修复了它,但是:
我将python版本从64位改为32位
更新路径变量的脚本相当混乱,所以我手动将它们更改为应该是的。
我错误地添加了
C:\程序文件\OSGeo4W\bin\geos\u C.dll
但我应该补充说:
C:\ OSGeo4W\bin\geos_C.dll
现在,我可以从项目设置中删除GEOS_LIBRARY_PATH,事情仍然正常,所以我想这一定是64位对32位的问题,或者路径问题。

关于python - GeoDjango:现在无法修复名称GEOSException的导入,现在[WinError 126],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27001317/

10-11 01:55