最近跑代码时突然在 from osgeo import gdal 时报错,
ImportError: libgeos-3.4.2.so: cannot open shared object file: No such file or directory是动态链接库的问题,很奇怪自己没有动过环境却出了问题,经历了一波三折,总结一下配置gdal的环境方法
conda与pip应该是最简单的一种方法,但是可能由于镜像不稳定的原因,使用conda install gdal 时,总是无法找到资源,使用pip install gdal可以安装成功,不过依旧没有解决动态链接库的问题
由于自己账号没有root权限,所以源码编译不能装在根目录下,参考一些博客,方法如下: 第一步下载Proj4、GEOS、gdal (分别是tar.gz和tar.bz2),这一步有的人说只要gdal,有的人说需要前面两个依赖库,我这里都下载编译了 第二步解压缩 tar -zxvf + gdal包名字 tar -jxvf + geos包名字 第三步在你想要安装的目录下新建三个文件夹,gdal、geos、proj 第四步目录切到解压缩后的prj目录
./configure --prefix=‘你的proj目录’ --without-jni make make install配置时如果失败就去掉–without-jni 第五步 切到解压缩的geos文件夹,重复上面配置、编译、安装 第六步 切到解压缩的gdal文件夹
./configure --prefix=‘你的gdal路径’--with-geos=‘指定到geos下的bin/geos-config’ make make install这一步的编译耗费时间很长,大概快20分钟,第五步和第六步编译文件时,都会一直循环输出一些语句,开始时我以为是报错,后来没有查到类似问题,可能是正常的。 第七步 更改环境变量
vim ~/.bashrc在最后一行加上
export PATH=$PATH:/home/users/yourname/local/gdal-1.11.1/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/users/yourname/local/gdal-1.11.1/lib:/home/users/yourname/local/proj-4.8.0/lib退出保存,并刷新环境变量 结果:这一步我没有截图,还是动态链接库的问题,只不过换了一个库名字,泪奔
之后又找了很多网页,试了其他方法:比如下载这个库建立软链接、在系统中找到缺失的库
find / -name libgeos-3.4.2.so之后建立软链接,还是失败; 回滚环境(这个乍一看是非常方便的方法,用了后效果还是不行) conda list --revisions,能够安装和卸载的库,时间线排下来,(用的putty远程,因为记录很长,在conda list --revisions后加上 |more -c 可以看到全部记录)之后 conda install --revision N (其中N是修订版号),方法听起来很美好,尝试后还是失败,可能是我之前的记录失效了?
找到一种方法,直接用conda安装fiona,会自动把gdal包给你配置好,这样可以避免依赖包产生版本冲突,简直是懒人必备 只要两句
conda uninstall gdal #假如conda无法卸载,就用pip conda install fionaover,收工。