libgeos_c-1.dll не может быть загружен Python - PullRequest
4 голосов
/ 05 октября 2010

Я строю свой первый проект GeoDjango, но я немного отчаялся.

Я установил PostgreSQL 9 и PostGis 1.5 через Windows одним щелчком мыши. Так что все есть. Я установил для GEOS_LIBRARY_PATH полный путь к libgeos_c-1.dll в settings.py. Но когда я запускаю 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. На данном этапе я не знаю, что делать. Пожалуйста, помогите.

Ответы [ 5 ]

3 голосов
/ 11 января 2011

Очевидно, что после установки переменной GEOS_LIBRARY_PATH использование доблевых '\' косых черт работает для меня, но теперь запускает эту ошибку 'модуль' объект не имеет атрибута 'OSMGeoAdmin'

2 голосов
/ 18 июля 2012

Я просто столкнулся с той же проблемой после установки Postgresql 9.1 и postgis 2.0 через установщики Windows.Не нужно ничего скачивать.Все, что вам нужно сделать, это добавить этот каталог в путь Windows: C:\PostgreSQL\9.1\bin или там, где находится файл libgeos_c-1.dll.Вам может потребоваться перезагрузка, если вы хотите, чтобы новые переменные среды вступили в силу для вашей IDE.Для командных строк просто откройте новую командную строку.

При таком способе настройка GEOS_LIBRARY_PATH становится необязательной, поскольку необходимые файлы уже находятся в пути Windows.

Это может не сработать дляОП в 2010 году, но для тех, кто столкнется с той же проблемой в 2012 году, это, вероятно, самое простое решение.

1 голос
/ 05 октября 2010

Мне приходят в голову разные вещи, наиболее очевидным из которых является: Вы вставили туда путь к файлу DLL, а не только к папке, в которой он находится?Не обидеть означает, просто чтобы быть на безопасной стороне.

Тогда вы также можете получить эту ошибку, если есть неразрешенные зависимости, то есть сбой LoadLibrary DLL, потому что отсутствует другая библиотека, от которой он зависит.Вы можете легко узнать это, используя Dependency Walker .Загружайте libgeos с зависимости и ищите отсутствующие модули, сообщения об ошибках и т. Д. - возможно, вам не хватает libgeos-XYZ.dll.

0 голосов
/ 22 декабря 2015

У меня была такая же проблема, и я решил ее:

  1. Переустановка http://trac.osgeo.org/osgeo4w/ (моя папка установки C:\OSGeo4W64\)
  2. добавление строки:

    GEOS_LIBRARY_PATH = 'C: \ OSGeo4W64 \ bin \ geos_c.dll'

до settings.py

(после этого ответа: https://stackoverflow.com/a/21495785/2314737)

Это также упоминается в официальной документации :

Когда GeoDjango не может найти GEOS, возникает эта ошибка:

ImportError: Не удалось найти библиотеку GEOS (пробовал "geos_c"). Пытаться настройка GEOS_LIBRARY_PATH в ваших настройках. Наиболее распространенное решение это правильно настроить параметры среды библиотеки или установить GEOS_LIBRARY_PATH в ваших настройках.

0 голосов
/ 27 октября 2010

Та же проблема здесь.Не могли бы вы быть так любезны, чтобы поделиться правильной DLL?Если это действительно решает проблему.Или установка OSGeo4W является единственным способом? Если да, то какую процедуру установки вы выполняли?

...