GitHub Actions Ubuntu虚拟环境安装GDAL报错问题求助
故障原因
- 核心问题:版本不匹配。
ubuntu-latest(当前为Ubuntu 22.04)官方源内置的libgdal-dev版本为3.4.1,你指定安装的Python GDAL包版本为3.2.3,两者版本不一致导致编译时无法找到对应版本的符号与头文件,触发gcc编译错误。 - 次要问题:缺少Python编译基础依赖,且未配置GDAL相关环境变量,pip编译时无法识别系统安装的GDAL路径。
修复方案
方案1:自动适配系统GDAL版本(推荐,无需硬编码版本号)
修改Install dependencies步骤代码如下:
- name: Install dependencies run: | python -m pip install --upgrade pip # 安装基础编译依赖 sudo apt-get update sudo apt-get install -y build-essential python3-dev libproj-dev proj-data proj-bin libgeos-dev gdal-bin libgdal-dev libgdal-doc # 配置GDAL环境变量 export CPLUS_INCLUDE_PATH=/usr/include/gdal export C_INCLUDE_PATH=/usr/include/gdal pip install wheel pip install flake8 pytest Cython numpy proj geos # 自动获取系统GDAL版本,安装对应Python包 GDAL_VERSION=$(gdal-config --version | awk -F'[.]' '{print $1"."$2"."$3}') pip install GDAL==$GDAL_VERSION if [ -f requirements-linux.txt ]; then pip install -r requirements-linux.txt; fi
方案2:固定使用GDAL 3.2.3
如果你必须使用3.2.3版本的GDAL,添加对应版本的GIS软件源后再安装即可:
- name: Install dependencies run: | python -m pip install --upgrade pip # 添加适配Ubuntu的GDAL 3.2.x软件源 sudo add-apt-repository ppa:ubuntugis/ppa sudo apt-get update sudo apt-get install -y build-essential python3-dev libproj-dev proj-data proj-bin libgeos-dev gdal-bin=3.2.3+dfsg-2~focal2 libgdal-dev=3.2.3+dfsg-2~focal2 libgdal-doc=3.2.3+dfsg-2~focal2 # 锁定版本防止自动升级 sudo apt-mark hold libgdal-dev gdal-bin export CPLUS_INCLUDE_PATH=/usr/include/gdal export C_INCLUDE_PATH=/usr/include/gdal pip install wheel pip install flake8 pytest Cython numpy proj geos GDAL==3.2.3 if [ -f requirements-linux.txt ]; then pip install -r requirements-linux.txt; fi
内容的提问来源于stack exchange,提问作者Zach Tait
相关产品推荐
相关产品推荐

