2012-07-02 16 views
12

Sto cercando di installare Postgis per poter utilizzare GeoDjango su OSX.mancante libgeos_c.so su OSX

Per questo, in primo luogo ho disinstallato Postgres completamente, poi ho installato tutto seguendo la documentazione GeoDjango: https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#homebrew

ho il seguente:

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

Quando eseguo il mio progetto Django, ottengo il seguente errore:

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

mi sono imbattuto

sudo find . -name "libgeos_c*" 

E preso:

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

Come si può vedere, non ".so" file a tutti. Eventuali suggerimenti?

Modifica:

Per disperazione ho anche installato il KyngChaos pacchetti e ha aggiunto le seguenti impostazioni:

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' 

Questo risolto il problema.

+0

ho birra installare GEOS su Mac. Ma il GEOS_LIBRARY_PATH non è lo stesso sulla mia macchina come la tua. Sai, dove può essere trovato? Ho provato a utilizzare find, ma non sono riuscito a trovare il file .so in nessuna delle cartelle, su cui ho letto il permesso. Non ho diritti sudo. –

risposta

16

Siamo spiacenti, la soluzione di KyngChaos vanifica completamente lo scopo dell'utilizzo di homebrew.

La risposta per gli utenti homebrew (almeno, per questo) è quello di disinstallare geos e le sue dipendenze e poi reinstallare geos e quindi le sue dipendenze.

questo ha funzionato per me:

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 

Sembra che alcuni geos dipendenze sono sempre fuori sincrono.

È possibile verificare le librerie che hanno bisogno di essere installato tenendo traccia di cosa si ritorna:

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

Vedrai qualcosa di simile

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 

Quindi eseguire nuovamente il comando precedente python eo il problema verrà risolto o rivelerà un'altra dipendenza da disinstallare/installare.

+1

Penso di essere vicino, ora ricevendo django.db.utils.OperationalError: impossibile accedere al file "$ libdir/postgis-2.1": Nessun file o directory, il test di importazione di Python non genera errori. Ho dovuto disinstallare postgis, brew uninstall postgis e quindi installarlo di nuovo usando brew. – radtek

+0

Dopo aver passato ore, finalmente questo mi ha salvato. – xrage

2

Il installation instructions sembra contenere la risposta, ovvero impostare la variabile di ambiente $GEOS_LIBRARY_PATH.

+0

Questo mi ha indirizzato nella direzione corretta. Ho ignorato questa parte dei documenti perché in primo luogo appare sotto la sezione KyngChaos (stavo seguendo la sezione Homebrew) e in secondo luogo si dice: "Se stai usando una versione precedente di Django (come 1.0.2), allora dovrai aggiungi quanto segue nelle tue impostazioni "e sto usando Django 1.4. Per disperazione ho anche provato il percorso di KyngChaos e mentre non crea il file mancante, posso farlo funzionare con alcune impostazioni aggiuntive. – mbrochh

+0

Ehi, puoi segnare la risposta di nicerobot come migliore? – radtek

+0

@radtek Chi me? – trojanfoe

0

Lo stesso qui - dopo aver installato tutto come indicato, sono tornato indietro e ho aggiunto le librerie KyngChaos, quindi ho aggiunto le tre istruzioni di esportazione al mio ~/.bash_profile come elencato sopra. Questo ha risolto il mio problema.

1

Ho risolto in questo modo.

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

poi in ambienti Django impostare questo:

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

Poi ha funzionato per me.