GCP Ubuntu环境下Django项目GDAL安装及配置报错求助
一、初始错误:error in GDAL setup command: use_2to3 is invalid
这个错误的核心原因是GDAL 2.4.2的源码包依赖use_2to3构建选项,但该选项在setuptools 58+版本中被移除。即使指定了setuptools==57.5.0,仍可能因为Docker构建环境中依赖安装顺序问题导致setuptools版本未正确生效,或者缺少系统级GDAL头文件和库,使得pip只能从源码编译GDAL,触发该错误。
解决步骤:
优先安装系统级GDAL依赖
在Dockerfile中先安装Ubuntu 20.04自带的GDAL包(版本恰好是2.4.2,匹配需求),避免pip从源码编译:RUN apt-get update && apt-get install -y --no-install-recommends \ gdal-bin \ libgdal-dev \ python3-gdal \ && rm -rf /var/lib/apt/lists/*安装
python3-gdal后,系统已提供GDAL的Python绑定,可直接从requirements.txt中移除GDAL==2.4.2。调整依赖安装顺序(若坚持用pip安装)
需确保在安装GDAL前先安装setuptools和numpy,并设置环境变量让pip找到系统GDAL的头文件:ENV CPLUS_INCLUDE_PATH=/usr/include/gdal ENV C_INCLUDE_PATH=/usr/include/gdal RUN pip3 install setuptools==57.5.0 numpy==1.24.2 RUN pip3 install GDAL==2.4.2
二、清理后错误:main.gdal_config_error: [Errno 2] No such file or directory: 'gdal-config'
该错误是因为Docker镜像中未安装gdal-bin包,导致系统缺少gdal-config工具。执行上述第一步的系统依赖安装命令即可解决。
三、更新后错误:Django找不到GDAL库
出现django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library错误时,说明Django无法定位GDAL的动态链接库,需手动指定路径:
通过环境变量指定
在Dockerfile中添加:ENV GDAL_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libgdal.so.26(Ubuntu 20.04中GDAL 2.4.2的库文件路径为上述地址,可通过
find /usr/lib -name "libgdal.so*"验证)在Django配置中指定
在settings.py中添加:GDAL_LIBRARY_PATH = '/usr/lib/x86_64-linux-gnu/libgdal.so.26'
完整Dockerfile示例片段
FROM ubuntu:20.04 # 安装系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ gdal-bin \ libgdal-dev \ python3-pip \ python3-dev \ python3-gdal \ && rm -rf /var/lib/apt/lists/* # 设置GDAL环境变量 ENV CPLUS_INCLUDE_PATH=/usr/include/gdal ENV C_INCLUDE_PATH=/usr/include/gdal ENV GDAL_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libgdal.so.26 # 安装基础Python依赖 RUN pip3 install setuptools==57.5.0 numpy==1.24.2 # 安装项目依赖 COPY requirements.txt /requirements.txt RUN pip3 install -r /requirements.txt
内容的提问来源于stack exchange,提问作者Ananth

