Linux编译Python的GDAL

文章详细介绍了GDAL编译过程中需要注意的事项,包括版本对应、Python版本指定、python-devel的安装、numpy的预安装,以及编译错误的解决办法,如设置LD_LIBRARY_PATH。此外,还提到了libgdal.so.20找不到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几点要注意的坑:

前言:前期GDAL的编译

这部分内容网上很多,不细说了

  1. 下载好GEOS PROJ等包(要注意版本对应关系,我是geos3.6.2,proj 4.9.3, gdal 2.2.4),先把这两个库安装,即configure + make + make install

  1. 安装python-devel(cenos 中是python3-devel, ubuntu中是python-dev)

  1. pip3 install numpy 先安装好numpy...

一、指定的python版本要对

GDAL在configure时,需要指定 --with-python=python3,直接写python往往会绑定到系统自带的python2上去,所以最好指定python3或具体路径

二、找不到Python.h

往往在make的最后出现fatal error: Python.h: No such file or directory #include “Python.h“

这时候要注意,在gdal编译前需要python-devel。同理,也要注意python的版本,例如CentOS系统下,要执行yum install python3-devel -y才行,安装完毕后,再次make编译gdal

三、python版GDAL安装

make成功后,进入同目录下swig/python,然后用python3执行 python3 setup.py build 和 python3 setup.py install,才能完成gdal库的安装

四、验证python-gdal是否安装成功

(1) pip3 list

(2) 进入python3, from osgeo import gdal

五、提示importError: libgdal.so.20: cannot open shared obejct file

这个是因为找不到gdal编译好的libgdal.so.20静态库,一般make install 后库会被复制到安装目录(默认/usr/local/lib),所以,只需要export LD_LIBRARY_PATH=/usr/local/lib;$LD_LIBRARY_PATH即可。当然,为避免每次都要执行这句,在 ~/.bashrc 文件中添加就好

六、提示No module named _gdal.py

网上很多人说这是因为numpy没有在gdal及其绑定模块之前安装,所以先卸载gdal,安装numpy,再安装gdal.

另一种方式是在gdal编译的目录下,会有osgeo文件夹,这里面存放的就有_gdal.py,所以export LD_LIBRARY_PATH=osgeo文件夹路径,即可。

"I have a dream and I make it beautiful

this is love just like chemical

I have a dream and I make it beautiful

and you now, take my breath away"

《Chemical Bus》——Escape Plan

### Python 安装 GDAL 编译报错解决方案 在安装和配置 GDAL 的过程中,可能会遇到一些常见的错误。以下是针对 `ImportError: No module named _gdal` 错误以及可能的其他编译问题的解决方法。 #### 1. 确保依赖项已正确安装 GDAL 是一个复杂的库,它依赖于许多外部工具和库。如果这些依赖未正确安装,则可能导致编译失败或运行时错误。对于 Linux 用户来说,可以尝试通过包管理器安装必要的依赖项: ```bash sudo apt-get update sudo apt-get install libcurl4-openssl-dev libxml2-dev libproj-dev \ libgeos-dev libjpeg-dev libpng-dev libgif-dev \ build-essential g++ python3-dev ``` 上述命令涵盖了大多数常用的 GDAL 依赖项[^1]。 #### 2. 配置并重新构建 GDAL 当使用源码方式安装 GDAL 时,可以通过指定选项来确保 Python 绑定被正确生成。例如,在执行 `./configure` 脚本时加入 `--with-python` 参数: ```bash ./configure --with-python make clean make sudo make install ``` 此过程会清理旧的构建文件,并重新生成支持 PythonGDAL 库。 #### 3. 处理 `_gdal` 模块缺失的问题 如果在导入模块时收到类似于 `ImportError: No module named _gdal` 的提示,通常是因为动态链接库路径设置不正确或者缺少共享对象文件 `.so`。此时可采取以下措施之一: - **更新环境变量** 将 GDAL 的安装目录添加到系统的 `LD_LIBRARY_PATH` 中: ```bash export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` - **创建符号链接** 如果系统无法到所需的共享库,手动为其建立软连接可能是有效的办法: ```bash sudo ln -s /path/to/libgdal.so /usr/lib/libgdal.so ``` 以上操作有助于修复因路径问题引起的加载失败情况[^2]。 #### 4. 使用预编译二进制包简化安装流程 为了避免繁琐的手动编译步骤,推荐考虑采用 pip 工具直接获取适合当前平台架构优化过的轮子(wheels)。比如: ```bash pip install gdal==$(gdal-config --version | awk -F'[.]' '{print $1"."$2}') ``` 这条指令能够依据本地实际存在的 GDAL 版本来匹配兼容版本号,从而减少潜在冲突风险[^3]。 另外需要注意的是,某些特定场景下还可能存在 SQLite 相关联接错误等问题,这往往涉及到第三方数据库引擎的支持状况。对此类异常可通过单独下载最新版 SQLite 并按照其文档指示完成定制化组装工作加以规避[^5]。 --- ### 示例代码片段验证安装成功与否 下面提供一段简单的脚本用于确认是否能正常调用 GDAL 功能接口: ```python from osgeo import gdal, ogr, osr def test_gdal(): raster = gdal.Open('example.tif') if not raster: raise Exception("Failed to open example file.") test_gdal() print("GDAL is successfully installed and functional!") ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值