The amazing work of Christoph Gohlke is the source of all this. The unofficial windows binaries page at lfd is no longer maintained, but Christoph has created a dedicated GitHub repository with a subset of geospatial wheel assets. This tool is a straightforward CLI that can install binary wheels from the latest release assets with proper dependency ordering.
- Python 3.11 or higher
- Windows OS only
The precompiled wheels are only available for Windows on Python 3.11+.
Installation is straightforward using pip. The tool automatically checks for new versions and informs you when updates are available.
pip install pipgeoUV is automatically installed as a dependency for faster wheel installations.
- Automatic dependency resolution and installation order
- Fast installations using UV (with automatic fallback to pip)
- Download-only mode for offline installation
- Version checking and upgrade notifications
- Support for all major geospatial packages
Packages are installed in dependency order to ensure compatibility:
- GDAL - Geospatial Data Abstraction Library
- pyproj - Python interface to PROJ
- shapely - Manipulation and analysis of geometric objects
- cftime - Time-handling functionality
- Fiona - Vector data format support (requires GDAL)
- rasterio - Raster data access (requires GDAL)
- netCDF4 - Network Common Data Form support
- Rtree - Spatial indexing
- pyogrio - Vectorized spatial vector file format I/O
- Cartopy - Geospatial data processing (requires pyproj, shapely)
- basemap - Plotting 2D data on maps (requires pyproj)
Lists all available packages from the latest release for your system configuration, displayed in recommended installation order.
pipgeo releaseThis shows which packages are available for your Python version and architecture.
Fetches and installs a specific package from the latest release. Dependencies are automatically installed first if needed.
pipgeo fetch --lib gdalOptions:
--lib: Package name to install (required)--download-only: Download wheel without installing--output: Output directory for downloaded wheels (default: wheels)--quiet: Suppress non-essential output--use-pip: Force use of pip instead of UV
Examples:
# Install GDAL with automatic dependency handling
pipgeo fetch --lib gdal
# Download rasterio wheel only
pipgeo fetch --lib rasterio --download-only --output ./my-wheels
# Install using pip instead of UV
pipgeo fetch --lib shapely --use-pipInstalls all available geospatial packages from the release assets in the correct dependency order. This is the recommended way to set up a complete geospatial environment.
pipgeo sysOptions:
--download-only: Download all wheels without installing--output: Output directory for downloaded wheels (default: wheels)--quiet: Suppress non-essential output--use-pip: Force use of pip instead of UV
Examples:
# Install all packages (recommended)
pipgeo sys
# Download all wheels for offline installation
pipgeo sys --download-only --output ./wheels
# Install using pip instead of UV
pipgeo sys --use-pipBy default, pipgeo uses UV for installations, which is significantly faster than pip:
- 10-100x faster package installations
- Parallel downloads
- Better dependency resolution
- Efficient caching
If UV is not available or causes issues, pipgeo automatically falls back to pip. You can also force pip usage with the --use-pip flag.
Breaking Changes:
- Python 3.11+ now required (was 3.8+)
- UV is now the default installer (automatic fallback to pip)
- Flag changed:
--use-uvremoved, use--use-pipto force pip
Benefits:
- Much faster installations with UV
- Better dependency handling
- Modern Python features and type hints
- Cleaner package structure
To upgrade:
pip install --upgrade pipgeoIf you're on Python 3.8-3.10, you'll need to either:
- Upgrade to Python 3.11+, or
- Continue using pipgeo v0.0.7:
pip install "pipgeo<0.1.0"
If UV fails to install a package, pipgeo automatically falls back to pip. You can also force pip usage:
pipgeo sys --use-pipMake sure you're running the latest version of pipgeo:
pip install --upgrade pipgeoThen check available packages:
pipgeo releaseThis tool requires Python 3.11 or higher. Check your version:
python --versiongit clone https://github.com/samapriya/pipgeo.git
cd pipgeo
pip install -e .- BREAKING: Python 3.11+ now required
- UV is now the default installer with automatic fallback to pip
- Migrated to modern pyproject.toml configuration
- Added proper dependency ordering for all packages
- Improved error handling and user feedback
- Added
--use-pipflag to force pip usage - Removed unnecessary dependencies (natsort, setuptools from runtime)
- Updated to use SPDX license identifiers
- Enhanced CI/CD with UV support and linting
- Better type hints using Python 3.11+ features
- Added download-only mode and custom output directory support with
--download-onlyand--outputflags - Improved error handling with retries for HTTP requests and better exception handling
- Refactored code structure with type hints, dataclasses, and proper module organization
- Added better dependency management and version checking with more robust comparison logic
- Release checker tool now checks if packages exist for installed Python version in latest release
- Release tool now prints available release packages and version number
- Improved PyPI version check functionality
- Fetch tool auto upgrades to latest version if new version is available in release
- Added dependency check from dependency tree
- Dependencies also installed using pipgeo
- Updated readme with instructions
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
All wheels are built and maintained by Christoph Gohlke in the geospatial.whl repository.
If you use this tool in your research, please cite:
@software{pipgeo,
author = {Roy, Samapriya},
title = {pipgeo: CLI for Unofficial Windows Geospatial Library Wheels},
year = {2024},
url = {https://github.com/samapriya/pipgeo}
}