Docker Ubuntu镜像编译GDAL源码分支时osgeo模块缺失求助
解决GDAL编译后Python无法导入osgeo模块的问题
1. 安装编译Python绑定所需的基础依赖
在CMake编译前,先安装Python开发包及GDAL编译依赖:
RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ cmake \ python3-dev \ python3-pip \ libproj-dev \ libgeos-dev \ libsqlite3-dev \ libcurl4-openssl-dev
2. 调整CMake编译参数
编译时需要明确指定Python解释器及相关路径,确保CMake将Python模块安装到正确的site-packages目录。修改你的CMake命令为:
RUN cmake \ -DBUILD_PYTHON_BINDINGS=ON \ -DCMAKE_BUILD_TYPE=Release \ -DPython_EXECUTABLE=/usr/bin/python3 \ -DPython_INCLUDE_DIR=$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))") \ -DPython_LIBRARY=$(python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \ .. RUN cmake --build . -j$(nproc) RUN cmake --build . --target install
3. 设置PYTHONPATH环境变量
编译安装完成后,osgeo模块通常会被安装到对应Python版本的site-packages目录,需要将该路径加入PYTHONPATH:
# 获取当前Python的site-packages路径并设置环境变量 RUN echo "export PYTHONPATH=$(python3 -c "import site; print(site.getsitepackages()[0])"):\$PYTHONPATH" >> /etc/bash.bashrc ENV PYTHONPATH=$(python3 -c "import site; print(site.getsitepackages()[0])"):$PYTHONPATH
4. 验证安装
可在Dockerfile中添加验证步骤,确保模块能正常导入:
RUN python3 -c "from osgeo import gdal; print('GDAL version:', gdal.__version__)"
补充说明
- 若使用的GDAL源码分支有特殊Python绑定要求,可检查源码根目录下的
CMakeLists.txt或python/CMakeLists.txt文件,确认是否需启用额外编译开关。 - 确保Docker环境中编译用的Python解释器与运行
gdal2tiles.py时的版本一致,避免版本冲突。
内容的提问来源于stack exchange,提问作者creimers
相关产品推荐
相关产品推荐

