Skip to main content

CLI for Unofficial Windows Geospatial library wheels

Project description

pipgeo: CLI for Unofficial Windows Geospatial Library Wheels

CI pipgeo PyPI version License

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.

Requirements

  • Python 3.11 or higher
  • Windows OS only

The precompiled wheels are only available for Windows on Python 3.11+.

Installation

Installation is straightforward using pip. The tool automatically checks for new versions and informs you when updates are available.

pip install pipgeo

UV is automatically installed as a dependency for faster wheel installations.

Features

  • 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

Supported Packages

Packages are installed in dependency order to ensure compatibility:

  1. GDAL - Geospatial Data Abstraction Library
  2. pyproj - Python interface to PROJ
  3. shapely - Manipulation and analysis of geometric objects
  4. cftime - Time-handling functionality
  5. Fiona - Vector data format support (requires GDAL)
  6. rasterio - Raster data access (requires GDAL)
  7. netCDF4 - Network Common Data Form support
  8. Rtree - Spatial indexing
  9. pyogrio - Vectorized spatial vector file format I/O
  10. Cartopy - Geospatial data processing (requires pyproj, shapely)
  11. basemap - Plotting 2D data on maps (requires pyproj)

Usage

pipgeo release

Lists all available packages from the latest release for your system configuration, displayed in recommended installation order.

pipgeo release

This shows which packages are available for your Python version and architecture.

pipgeo fetch

Fetches and installs a specific package from the latest release. Dependencies are automatically installed first if needed.

pipgeo fetch --lib gdal

Options:

  • --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-pip

pipgeo sys

Installs 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 sys

Options:

  • --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-pip

Performance

By 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.

Upgrade Guide

From v0.0.x to v0.1.0

Breaking Changes:

  • Python 3.11+ now required (was 3.8+)
  • UV is now the default installer (automatic fallback to pip)
  • Flag changed: --use-uv removed, use --use-pip to 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 pipgeo

If 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"

Troubleshooting

UV Installation Issues

If UV fails to install a package, pipgeo automatically falls back to pip. You can also force pip usage:

pipgeo sys --use-pip

Package Not Found

Make sure you're running the latest version of pipgeo:

pip install --upgrade pipgeo

Then check available packages:

pipgeo release

Python Version Issues

This tool requires Python 3.11 or higher. Check your version:

python --version

Development

Building from Source

git clone https://github.com/samapriya/pipgeo.git
cd pipgeo
pip install -e .

Changelog

v0.1.0

  • 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-pip flag 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

v0.0.7

  • Added download-only mode and custom output directory support with --download-only and --output flags
  • 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

v0.0.6

  • Release checker tool now checks if packages exist for installed Python version in latest release

v0.0.5

  • 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

v0.0.4

  • Added dependency check from dependency tree
  • Dependencies also installed using pipgeo

v0.0.3

  • Updated readme with instructions

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Credits

All wheels are built and maintained by Christoph Gohlke in the geospatial.whl repository.

Citation

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}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pipgeo-0.1.0.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pipgeo-0.1.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file pipgeo-0.1.0.tar.gz.

File metadata

  • Download URL: pipgeo-0.1.0.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for pipgeo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9d73c9c78c89d98de16e48f9a73f8eb7960cc5fc2dbf3e54b1a8f9e7e966384b
MD5 b5a10b75cf6e59f97c0a9fb5b2c79657
BLAKE2b-256 4586306d7b6d91070c2e99e382515b3cb35a10c098f6d701d683199fa2129b7e

See more details on using hashes here.

File details

Details for the file pipgeo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pipgeo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for pipgeo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1da60f25565df407d9f8f55b8d2db6c717c5b5e7147061a3684e8f25f72d9b4
MD5 083ec2f7bbaa8f1f179aa998d5f286a9
BLAKE2b-256 9e4cb114a4936154bd5934aab93ed9749e74400462230317e296a079a1574e23

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page