2012-07-02 12 views
12

Próbuję zainstalować Postgis, aby korzystać z GeoDjango na OSX.brakujące libgeos_c.so na OSX

W tym celu, najpierw odinstalować postgres całkowicie, następnie zainstalowałem wszystko następującej dokumentacji GeoDjango: https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#homebrew

zrobiłem następujące:

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

Kiedy uruchomić mój projekt Django, mam następujące błąd:

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

Pobiegłem

sudo find . -name "libgeos_c*" 

I got:

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

Jak widać, nie ma ".so" plików w ogóle. Jakieś sugestie?

EDIT:

Z rozpaczy Ja również zainstalowali KyngChaos Pakiety i dodaje się następujące ustawienia:

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' 

To rozwiązało problem.

+0

zrobiłem napar zainstalować Geos na Mac. Ale GEOS_LIBRARY_PATH nie jest taka sama na moim komputerze jak Twoja. Czy wiesz, gdzie można go znaleźć? Próbowałem użyć find, ale nie mogłem znaleźć pliku .so w żadnym folderze, do którego mam uprawnienia odczytu. Nie mam uprawnień sudo. –

Odpowiedz

16

Przepraszamy, że rozwiązanie KyngChaos całkowicie pokonało cel używania homebrew.

Odpowiedź na homebrew użytkowników (przynajmniej na ten jeden) jest deinstalacji geos i jego zależności i następnie ponowna geos a następnie jego zależności.

Ten pracował dla mnie:

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 

Wydaje się pewne geos Zależności są coraz zsynchronizowane.

Można zweryfikować bibliotek, które muszą być zainstalowane śledząc co to zwraca:

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

Zobaczysz coś

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 

Następnie uruchom powyższego polecenia python i albo problem zostanie rozwiązany lub ujawni inną zależność od odinstalowania/instalacji.

+1

Myślę, że jestem blisko, teraz dostaję django.db.utils.OperationalError: nie mogę uzyskać dostępu do pliku "$ libdir/postgis-2.1": Brak takiego pliku lub katalogu, test importowania Pythona nie powoduje błędów. Musiałem odinstalować postgis, odinstaluj i odinstaluj postgis, a następnie zainstaluj go ponownie przy użyciu naparu. – radtek

+0

Po spędzeniu godzin, w końcu to mnie uratowało. – xrage

2

Pojawia się odpowiedź installation instructions, czyli ustawienie zmiennej środowiskowej $GEOS_LIBRARY_PATH.

+0

To wskazało mi właściwy kierunek. Zignorowałem tę część dokumentacji, ponieważ po pierwsze pojawia się ona pod sekcją KyngChaos (podążałem za sekcją Homebrew), a po drugie mówi: "Jeśli używasz poprzedniej wersji Django (jak 1.0.2), będziesz musiał dodaj następujące ustawienia do swoich ustawień "i używam Django 1.4. Z desperacji spróbowałem również trasy KyngChaos i podczas gdy nie tworzy ona brakującego pliku, mogłem go uruchomić z dodatkowymi ustawieniami. – mbrochh

+0

Hej, możesz oznaczyć odpowiedź nicerobota najlepiej? – radtek

+0

@radtek Who me? – trojanfoe

0

To samo tutaj - po zainstalowaniu wszystkiego zgodnie ze wskazówkami, wróciłem i dodałem biblioteki KyngChaos, a następnie dodałem trzy wyciągi eksportowe do mojego ~/.bash_profile, jak wymieniono powyżej. To naprawiło mój problem.

1

Rozwiązałem to w ten sposób.

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

następnie w ustawieniach Django ustawić to:

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

Następnie pracował dla mnie.