linux上python-gdal环境配置

    科技2024-08-14  30

    最近跑代码时突然在 from osgeo import gdal 时报错,

    ImportError: libgeos-3.4.2.so: cannot open shared object file: No such file or directory

    是动态链接库的问题,很奇怪自己没有动过环境却出了问题,经历了一波三折,总结一下配置gdal的环境方法

    第一种:conda 卸载与安装

    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

    找到一种方法,直接用conda安装fiona,会自动把gdal包给你配置好,这样可以避免依赖包产生版本冲突,简直是懒人必备 只要两句

    conda uninstall gdal #假如conda无法卸载,就用pip conda install fiona

    over,收工。

    Processed: 0.010, SQL: 8