Skip to content

samapriya/pipgeo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

CLI for Unofficial windows Geospatial library wheels

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published

Languages