2012-07-02 16 views
12

Estoy tratando de instalar Postgis para usar GeoDjango en OSX.falta libgeos_c.so en OSX

Para esto, primero desinstala postgres por completo, entonces instalado todo siguiendo la documentación GeoDjango: https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#homebrew

hice lo siguiente:

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

Cuando ejecuto mi proyecto Django, me sale el siguiente de error:

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

me encontré

sudo find . -name "libgeos_c*" 

y consiguió:

./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 

Como se puede ver, no hay archivos ".so" en absoluto. ¿Alguna sugerencia?

Editar:

Fuera de la desesperación También he instalado los paquetes KyngChaos y ha añadido los siguientes ajustes:

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' 

Esto resolvió el problema.

+0

me instalo cerveza GEOS en Mac. Pero GEOS_LIBRARY_PATH no es lo mismo en mi máquina que la tuya. ¿Sabes dónde se puede encontrar? Traté de usar find, pero no pude encontrar el archivo .so en ninguna de las carpetas, para lo cual leí permiso. No tengo derechos de sudo. –

Respuesta

16

Lo sentimos, esa solución KyngChaos derrota por completo el propósito de usar homebrew.

La respuesta para los usuarios caseros (al menos, para éste) es desinstalación geos y sus dependencias y vuelva a instalar geos y sus dependencias.

Esto funcionó para mí:

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 

parece que algunos geos dependencias están recibiendo fuera de sincronía.

Puede verificar las bibliotecas que necesitan ser instalado mediante el seguimiento de lo que esto devuelve:

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

Usted verá algo así como

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 

A continuación, vuelva a ejecutar el comando anterior y, o bien python el problema se resolverá o revelará otra dependencia para desinstalar/instalar.

+1

Creo que estoy cerca, ahora obtengo django.db.utils.OperationalError: no pude acceder al archivo "$ libdir/postgis-2.1": no existe ese archivo o directorio, esa prueba de importación de Python no arroja errores. Tuve que desinstalar Postgis, brew uninstall postgis y luego instalarlo de nuevo usando brew. – radtek

+0

Después de pasar horas, finalmente esto me salvó. – xrage

2

El installation instructions parece contener la respuesta, que es establecer la variable de entorno $GEOS_LIBRARY_PATH.

+0

Esto me indicó la dirección correcta. Ignoré esta parte de los documentos porque primero aparece en la sección KyngChaos (estaba siguiendo la sección Homebrew) y en segundo lugar dice: "Si está utilizando una versión anterior de Django (como 1.0.2), entonces tendrá que agregue lo siguiente en su configuración "y estoy usando Django 1.4. Por desesperación, también probé la ruta KyngChaos y aunque no crea el archivo que falta, pude hacerlo funcionar con algunas configuraciones adicionales. – mbrochh

+0

Oye, ¿puedes marcar la respuesta de nicerobot como mejor? – radtek

+0

@radtek ¿Quién soy? – trojanfoe

0

Lo mismo aquí: después de instalar todo como se indica, volví y agregué las bibliotecas de KyngChaos, luego agregué las tres declaraciones de exportación a mi ~/.bash_profile como se menciona arriba. Esto solucionó mi problema.

1

Lo resolví de esta manera.

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

continuación, en la configuración de Django establece lo siguiente:

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

Luego se trabajó para mí.