一、問題背景
? ? ? ?由于需要用python打包一個(gè)django工程發(fā)布的k8s集群,當(dāng)我用python官方鏡像3.9.6版本進(jìn)行構(gòu)建鏡像進(jìn)行打包時(shí),再進(jìn)行pip install gdal包安裝時(shí),發(fā)生了gdal-config找不到的情況。
二、問題解決
? ? ? ? 經(jīng)過百度,也沒找到太easy的解決方案。經(jīng)過各種資料信息搜尋,問題點(diǎn)在于python:3.9.6的基礎(chǔ)系統(tǒng)用的是deban10(buster),里面并沒有安裝gdal-config,通過官網(wǎng)發(fā)現(xiàn)gdal已經(jīng)推出了stable 版本 gdal3.2.2版本了,如下所示:
?

但是該版本支持的是deban11(bullseye),所以只要使用bullseye的系統(tǒng)版本,通過apt進(jìn)行安裝應(yīng)該就能解決gdal的安裝問題,找下python官網(wǎng)鏡像,是否可以有bullseye的版本,果然

先驗(yàn)證下,docker run 起來python:3.9.6-bullsye鏡像后,查看/etc/apt/sources.list

nice, 然后通過apt命令進(jìn)行g(shù)dal3.2.2的安裝
apt-get update && apt-get install -y gdal-bin libgdal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
經(jīng)過漫長(zhǎng)但又不太長(zhǎng)(1-2min)的等待,安裝完畢,然后驗(yàn)證下gdal-config是否已經(jīng)存在
輸入命令gdap-config --version,輸出如下:

通過pip list 查看,GDAL:3.2.2已經(jīng)安裝成功。
######################書接上回#########################
三、新問題ModuleNotFoundError: No module named '_gdal_array'
在上面安裝好gdal之后,程序運(yùn)行過程中拋出了一個(gè)錯(cuò)誤“ModuleNotFoundError: No module named '_gdal_array'”
導(dǎo)致這個(gè)問題的原因,是因?yàn)闆]有先安裝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、驗(yàn)證
找到python安裝lib下的osgeo,打印下
ls?/usr/local/lib/python3.9/site-packages/osgeo/ #修改成自己的
如果有_gdal_array的.so文件才沒問題
