我正在尝试安装Postgis以便在OSX上使用GeoDjango。
为此,我首先完全卸载了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”文件。有什么建议吗?
编辑:
出于绝望,我还安装了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'
这解决了这个问题。
答案 0 :(得分:18)
很抱歉,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
命令,问题将得到解决,或者它将显示卸载/安装的另一个依赖项。
答案 1 :(得分:2)
installation instructions似乎保留了答案,即设置环境变量$GEOS_LIBRARY_PATH
。
答案 2 :(得分:2)
我这样解决了。
$ 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'
然后它对我有用。
答案 3 :(得分:0)
同样在这里 - 按照指示安装所有内容后,我回去添加了KyngChaos库,然后将三个导出语句添加到我上面列出的〜/ .bash_profile中。这解决了我的问题。
答案 4 :(得分:0)
我遇到了同样的问题,并且能够通过从Homebrew卸载GDAL并从KyngChaos安装GDAL Complete软件包来解决它:http://www.kyngchaos.com/software/frameworks