Подтвердить что ты не робот

Отсутствует libgeos_c.so на OSX

Я пытаюсь установить Postgis для использования GeoDjango на OSX.

Для этого я сначала полностью удалил postgres, затем я установил все, что было после документации GeoDjango: https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#homebrew

Я сделал следующее:

brew update
brew upgrade
brew install postgresql
brew install postgis
brew install gdal
brew install libgeoip

Когда я запускаю проект Django, я получаю следующую ошибку:

OSError at / dlopen(/usr/local/lib/libgeos_c.so, 6): image not found

Я побежал

sudo find . -name "libgeos_c*"

И получил:

./Library/Frameworks/GEOS.framework/Versions/3/unix/lib/libgeos_c.dylib
./Users/martin/opt/geos-3.3.0/capi/.deps/libgeos_c_la-geos_c.Plo
./Users/martin/opt/geos-3.3.0/capi/.deps/libgeos_c_la-geos_ts_c.Plo
./usr/local/Cellar/geos/3.3.3/lib/libgeos_c.1.dylib
./usr/local/Cellar/geos/3.3.3/lib/libgeos_c.a
./usr/local/Cellar/geos/3.3.3/lib/libgeos_c.dylib
./usr/local/Cellar/geos/3.3.4/lib/libgeos_c.1.dylib
./usr/local/Cellar/geos/3.3.4/lib/libgeos_c.a
./usr/local/Cellar/geos/3.3.4/lib/libgeos_c.dylib
./usr/local/Cellar/geos/3.3.5/lib/libgeos_c.1.dylib
./usr/local/Cellar/geos/3.3.5/lib/libgeos_c.a
./usr/local/Cellar/geos/3.3.5/lib/libgeos_c.dylib
./usr/local/lib/libgeos_c.1.dylib
./usr/local/lib/libgeos_c.a
./usr/local/lib/libgeos_c.dylib

Как вы можете видеть, никаких файлов ".so" вообще нет. Любые предложения?

Edit:

Из отчаяния я также установил пакеты KyngChaos и добавил следующие настройки:

GEOS_LIBRARY_PATH = '/Library/Frameworks/GEOS.framework/GEOS' 
GDAL_LIBRARY_PATH = '/Library/Frameworks/GDAL.framework/GDAL' 
GEOIP_LIBRARY_PATH = '/usr/local/Cellar/geoip/1.4.8/lib/libGeoIP.dylib'

Это решило проблему.

4b9b3361

Ответ 1

Извините, что решение KyngChaos полностью поражает цель использования доморощенного.

Ответ для доморощенных пользователей (по крайней мере, для этого) заключается в удалении geos и его зависимостях и , а затем переустановите geos, а затем его зависимости.

Это сработало для меня:

brew uninstall geos gdal geoip libspatialite librasterlite spatialite-gui spatialite-tools
brew cleanup
brew install geos
brew install gdal geoip libspatialite librasterlite spatialite-gui spatialite-tools
brew cleanup

Кажется, что некоторые зависимости geos выходят из синхронизации.

Вы можете проверить библиотеки, которые необходимо установить, отслеживая, что это возвращает:

python -c 'import _ctypes; _ctypes.dlopen("/usr/local/lib/libgdal.dylib")'

Вы увидите что-то вроде

Reason: Incompatible library version: [some geos dependent library].dylib requires version X.X.X or later, but libgeos_c.1.8.0.dylib provides version X.X.X.

brew uninstall [some geos dependency]
brew install [some geos dependency]
brew cleanup

Затем запустите предыдущую команду python, и проблема будет решена, или она покажет другую зависимость для удаления/установки.

Ответ 2

инструкции по установке, как представляется, содержит ответ, который должен установить переменную окружения $GEOS_LIBRARY_PATH.

Ответ 3

Я решил это так.

$ brew install postgresql
$ brew install postgis
$ brew install gdal
$ brew install libgeoip

то в настройках Django установите это:

GEOS_LIBRARY_PATH = '/usr/local/Cellar/geos/3.4.2/lib/libgeos_c.1.dylib'

Тогда это сработало для меня.

Ответ 4

То же самое - после установки всего, как указано, я вернулся и добавил библиотеки KyngChaos, а затем добавил три экспортирующих оператора в мой ~/.bash_profile, как указано выше. Это исправило мою проблему.

Ответ 5

У меня была эта же проблема и я смог решить ее, удалив GDAL из Homebrew и установив пакет GDAL Complete из KyngChaos: http://www.kyngchaos.com/software/frameworks