首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GeoDjango:无法导入名称GEOSException固定,现在[WinError 126]

GeoDjango:无法导入名称GEOSException固定,现在[WinError 126]
EN

Stack Overflow用户
提问于 2014-11-18 18:24:15
回答 1查看 3K关注 0票数 2

我使用python3.4,postgres 9.3.5,Windows 7。

我跟随这个来尝试让GeoDjango工作:https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#windows

当我试图将django.contrib.gis添加到已安装的应用程序中时(在py魅力中),或者当我试图运行

下面是回溯。

但是,在这个目录C:\Python34\Lib\site-packages\django\contrib\gis\geos中有geometry.py (在其中作为类GEOSGeometry )和error.py (其中有类GEOSException )。

当我在python shell中运行这个程序时,它不会抛出任何错误:

代码语言:javascript
复制
>>> from django.contrib.gis.geos.error import GEOSException 

谢谢你对这个问题的任何思考。一堆其他的回溯,然后:

代码语言:javascript
复制
  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'

update 我发现了一些建议我应该更新项目设置的信息:

代码语言:javascript
复制
GEOS_LIBRARY_PATH = r'C:\Program Files\OSGeo4W64\bin\geos_c.dll'

这起作用了,但现在我得到了WinError 126

代码语言:javascript
复制
  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

我不清楚哪些模块是找不到的,也不清楚如何修复它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-21 20:24:54

我解决了这个问题。看看我在这里做了什么

Django论坛我是如何修复它的

对不起,这个错误消息很模糊。我已经申请了一张改进它的罚单: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,,您将看到只有在GEOSException为True的情况下才会导入HAS_GEOS。这就是为什么如果安装了GEOS,从GEOSException导入django.contrib.gis.geos就会成功,否则就会失败。

至于win 126错误:

我不清楚到底是什么帮助了它,但是:

  1. 我将python版本从64位更改为32位
  2. 更新路径变量的脚本非常混乱,所以我手动地将它们更改为应该是什么。
  3. 我错误地添加了

C:\program files\OSGeo4W\bin\geos_c.dll

但我应该补充说:

C:\OSGeo4W\bin\geos_c.dll

现在,我可以从项目设置中删除GEOS_LIBRARY_PATH,所以我猜一定是64位对32位问题,或者路径问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27001317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档