一、问题背景
由于需要用python打包一个django工程发布的k8s集群,当我用python官方镜像3.9.6版本进行构建镜像进行打包时,再进行pip install gdal包安装时,发生了gdal-config找不到的情况。
二、问题解决
经过百度,也没找到太easy的解决方案。经过各种资料信息搜寻,问题点在于python:3.9.6的基础系统用的是deban10(buster),里面并没有安装gdal-config,通过官网发现gdal已经推出了stable 版本 gdal3.2.2版本了,如下所示:
但是该版本支持的是deban11(bullseye),所以只要使用bullseye的系统版本,通过apt进行安装应该就能解决gdal的安装问题,找下python官网镜像,是否可以有bullseye的版本,果然
先验证下,docker run 起来python:3.9.6-bullsye镜像后,查看/etc/apt/sources.list
nice, 然后通过apt命令进行gdal3.2.2的安装
apt-get update && apt-get install -y gdal-bin libgdal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
经过漫长但又不太长(1-2min)的等待,安装完毕,然后验证下gdal-config是否已经存在
输入命令gdap-config --version,输出如下:
通过pip list 查看,GDAL:3.2.2已经安装成功。
######################书接上回#########################
三、新问题ModuleNotFoundError: No module named '_gdal_array'
在上面安装好gdal之后,程序运行过程中抛出了一个错误“ModuleNotFoundError: No module named '_gdal_array'”
导致这个问题的原因,是因为没有先安装numpy
解决方案如下:
1、先卸载gdal
pip uninstall gdal
2、安装numpy
pip install numpy
3、再安装gdal
pip install gdal==$(gdal-config --version) --global-option=build_ext --global-option="-I/usr/include/gdal"
4、验证
找到python安装lib下的osgeo,打印下
ls /usr/local/lib/python3.9/site-packages/osgeo/ #修改成自己的
如果有_gdal_array的.so文件才没问题