Python Geospatial CI/CD & Wheel Building

GDAL · PROJ · PyProj

Python Geospatial CI/CD & Wheel Building is a technical resource for compiling, testing, and distributing Python geospatial C-extensions — the bindings behind GDAL, PROJ, and PyProj — using modern CI/CD and wheel workflows. It exists to make native spatial packaging reproducible instead of fragile.

The material is organised around two pillars. The first covers the binary contract itself: the CPython ABI, shared-library path resolution, memory safety, security boundaries, cross-compilation, and the trade-offs of vendoring PROJ and GDAL. The second covers the build pipeline: pyproject.toml, scikit-build-core and CMake, Pixi/conda environment isolation, manylinux and musllinux base images, caching strategies, and artifact structuring for distribution.

It is written for python gis developers, package maintainers, devops, and data platform teams. Every guide ships exact, copy-pasteable configuration and validation commands so you can move from a broken ImportError to a portable, audited wheel.

Explore the content

Two pillars, each broken into focused clusters and deep-dive guides.

Geospatial C-Extension Fundamentals & ABI Architecture

Building production-grade Python geospatial packages requires rigorous control over the binary interface between CPython and native C/C++ libraries. When distributing bindings…

Open section

Modern Python Build Tooling & Wheel Configuration

The geospatial Python ecosystem has historically struggled with fragile build chains, implicit system dependencies, and non-reproducible C-extension compilation. Modern Python…

Open section