2012-07-02 32 views
12

Tôi đang cố cài đặt Postgis để sử dụng GeoDjango trên OSX.thiếu libgeos_c.so trên OSX

Đối với điều này, đầu tiên tôi gỡ bỏ cài đặt postgres hoàn toàn, sau đó tôi cài đặt tất cả mọi thứ sau khi tài liệu GeoDjango: https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#homebrew

tôi như sau:

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

Khi tôi chạy dự án Django của tôi, tôi nhận được như sau lỗi:

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

tôi chạy

sudo find . -name "libgeos_c*" 

Và 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 

Như bạn thấy, không có ".so" file nào cả. Bất kỳ đề xuất?

Edit:

Out of tuyệt vọng Tôi cũng đã cài đặt KyngChaos gói và thêm vào các cài đặt sau:

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' 

này đã giải quyết được vấn đề.

+0

tôi đã brew cài đặt GEOS trên Mac. Nhưng GEOS_LIBRARY_PATH không giống trên máy tính của tôi như máy của bạn. Bạn có biết, nơi nó có thể được tìm thấy? Tôi đã cố gắng sử dụng tìm, nhưng tôi không thể tìm thấy tập tin .so trong bất kỳ thư mục nào mà tôi đã đọc quyền. Tôi không có quyền sudo. –

Trả lời

16

Xin lỗi, giải pháp KyngChaos đó hoàn toàn đánh bại mục đích sử dụng homebrew.

Câu trả lời cho người dùng homebrew (ít nhất, với bộ phim này) là để uninstall geos và phụ thuộc của nósau đó cài đặt lại geos và sau đó phụ thuộc của nó.

này đã làm việc cho tôi:

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 

Có vẻ như một số geos phụ thuộc đang nhận được đồng bộ.

Bạn có thể xác minh các thư viện mà cần phải được cài đặt bằng cách theo dõi những gì này trả về:

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

Bạn sẽ thấy một cái gì đó giống như

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 

Sau đó chạy lại python lệnh trên và một trong hai vấn đề sẽ được giải quyết hoặc nó sẽ tiết lộ một sự phụ thuộc khác để gỡ cài đặt/cài đặt.

+1

Tôi nghĩ rằng tôi gần gũi, bây giờ nhận được django.db.utils.OperationalError: không thể truy cập tập tin "$ libdir/postgis-2.1": Không có tập tin hoặc thư mục đó, mà kiểm tra nhập khẩu python ném không có lỗi. Tôi đã phải gỡ bỏ cài đặt postgis, brew gỡ bỏ cài đặt postgis và sau đó cài đặt nó một lần nữa bằng cách sử dụng brew. – radtek

+0

Sau khi dành hàng giờ, cuối cùng điều này đã cứu tôi. – xrage

2

installation instructions xuất hiện để giữ câu trả lời, đó là đặt biến môi trường $GEOS_LIBRARY_PATH.

+0

Điều này hướng tôi vào đúng hướng. Tôi bỏ qua phần này của tài liệu bởi vì trước hết nó xuất hiện dưới phần KyngChaos (tôi đã theo phần Homebrew) và thứ hai nói: "Nếu bạn đang sử dụng phiên bản trước của Django (như 1.0.2), thì bạn sẽ phải thêm phần sau trong cài đặt của bạn "và tôi đang sử dụng Django 1.4. Trong tuyệt vọng, tôi cũng đã thử các tuyến đường KyngChaos và trong khi nó không tạo ra các tập tin bị thiếu, tôi có thể làm cho nó chạy với một số cài đặt bổ sung. – mbrochh

+0

Hey bạn có thể đánh dấu câu trả lời của nicerobot là tốt nhất không? – radtek

+0

@radtek Tôi là ai? – trojanfoe

0

Tương tự ở đây - sau khi cài đặt mọi thứ theo chỉ dẫn, tôi quay lại và thêm thư viện KyngChaos, sau đó thêm ba câu lệnh xuất vào ~/.bash_profile như được liệt kê ở trên. Điều này đã khắc phục được sự cố của tôi.

1

Tôi đã giải quyết nó theo cách này.

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

sau đó trong cài đặt Django thiết lập này:

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

Sau đó, nó làm việc cho tôi.