Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to IBM Power - Optimized Python Wheels 🚀

This readme is designed to help new users quickly understand, discover, and use optimized Python wheels for IBM Power (ppc64le) systems. Whether you are evaluating the ecosystem, setting up your environment, or building Python applications, this guide walks you step by step.

🧭 Your Path to Using Optimized Wheels

  1. Understand the Value - Why optimized wheels matter on IBM Power
  2. Check Compatibility - Architecture, processors, and Python versions
  3. Discover Available Wheels - Find packages and versions easily
  4. Install with pip - Use familiar workflows with DevPI
  5. Install with uv - Fast, modern package management with uv
  6. Explore Examples - General usage applications
  7. Go Further - Build faster, easier and explore the Ecosystem

1️⃣ Understand the Value: Why Optimized Wheels Matter

Python wheels (.whl) are prebuilt binary distributions that install directly with pip, without local compilation.

IBM's wheels are:

  • Natively built on IBM Power (not cross-compiled)
  • Optimized for AI, ML, and scientific computing
  • Delivered through a DevPI repository that integrates seamlessly with pip

2️⃣ Check Compatibility: Is This Right for You?

Before getting started, confirm your environment:

Supported Platforms

  • Architecture: ppc64le
  • Processors: Power9, Power10, Power11
  • Python Versions: 3.10 - 3.13 (3.14 preview for few packages)

If your system matches the above, you're ready to proceed.

3️⃣ Discover Available Wheels: Find the Right Packages

🔍 Central Wheel Repository

This is your main entry point for available optimized wheels:

👉 Wheel Repository (DevPI):

https://wheels.developerfirst.ibm.com/ppc64le/linux

ℹ️ Note: This page shows only the latest version of each package.

👉 Simple Index (All versions):

To view all available wheel versions for a package, refer to the Simple Index on the DevPI server, which provides the complete version history for that package.

📝 Note: Wheel Versions and Suffixes

IBM Power wheels are published in two forms:

Wheel type Example version Purpose
Suffix wheel 2.2.6+ppc64le1, 2.2.6+ppc64le2 Identifies a specific IBM Power build. The wheel with the highest suffix for a given upstream version is the latest build.
Suffix-free wheel 2.2.6 A fixed, stable build provided for compatibility with package management workflows, including uv, where a canonical version without local suffixes may simplify dependency resolution and version matching.
  • The suffix (ppc64le1, ppc64le2, …) is incremented each time a wheel is rebuilt for the same upstream version, for example to pick up dependency updates or build script improvements.
  • The suffix-free wheel is provided for workflows that prefer or require the canonical version without a local version suffix. If you need build traceability or want to ensure a specific build is used, always pin to the explicit suffixed version (e.g. numpy==2.2.6+ppc64le1).
  • Both forms are available simultaneously — you can use either depending on your workflow.

Choosing the right version:

Goal What to install
Latest IBM Power build Highest-suffix version, e.g. 2.2.6+ppc64le2
Simple install with no suffix needed (e.g. with uv) Suffix-free version 2.2.6
A specific known build Full suffixed version, e.g. 2.2.6+ppc64le1

Pinning to a specific build: Specify the full suffixed version explicitly:

# pip
pip install "numpy==2.2.6+ppc64le2" \
  --extra-index-url=https://wheels.developerfirst.ibm.com/ppc64le/linux

# uv
uv pip install "numpy==2.2.6+ppc64le2" \
  --index https://wheels.developerfirst.ibm.com/ppc64le/linux

To see all available builds for a package, browse the Simple Index.

📦 Complete Package & Version Indexes

To explore all available versions, Python compatibility, and licenses, use the indexes below:

4️⃣ Install with pip: Familiar Workflow

The optimized wheel repository acts as a Power-aware extension to PyPI, allowing you to use standard pip install commands while automatically selecting compatible IBM Power wheels when available without requiring any changes to your existing Python tooling

Installation using the IBM Power DevPI Repository

Use --prefer-binary to prioritize prebuilt Power wheels:

pip install --prefer-binary <package-name> \
  --extra-index-url=https://wheels.developerfirst.ibm.com/ppc64le/linux
  • This pulls from IBM's Power-optimized wheel repo.
  • Any noarch dependencies will still come from PyPI.

👉 Browse Available Packages (Optional): Use devpi-client to explore the repository:

pip install devpi-client
devpi use https://wheels.developerfirst.ibm.com/ppc64le/linux
devpi list

Troubleshooting Tips

  • If a package fails to install, try forcing binary wheels and disabling cache:

    pip install --prefer-binary --no-cache-dir <package-name> \
    --extra-index-url=https://wheels.developerfirst.ibm.com/ppc64le/linux
  • Ensure you're using the correct Python version.

    python --version
  • If a package is missing, request it via IBM Power ISV ecosystem enablement form

Best Practices

  • Always use a virtual environment. This isolates dependencies and ensures a clean setup.

    python3.12 -m venv venv
    source venv/bin/activate
  • Keep tools up to date:

    pip install --upgrade pip setuptools
  • Use --prefer-binary to avoid unnecessary source builds.

5️⃣ Install with uv: Fast, Modern Package Management

uv is an extremely fast Python package manager written in Rust. It is a drop-in replacement for pip and pip-tools, and works seamlessly with the IBM Power DevPI repository.

Installing uv

# Using pip
pip install uv

# Or using the official standalone installer
curl -LsSf https://astral.sh/uv/install.sh | sh

Installation using the IBM Power DevPI Repository

IBM Power wheels are published as suffix-free builds (e.g. 2.2.6) in addition to suffixed builds (e.g. 2.2.6+ppc64le1, 2.2.6+ppc64le2). The suffix-free wheel is a fixed, stable build that enables package managers such as uv to install the package using the canonical version (2.2.6) without requiring knowledge of the exact local-version suffix. See the Wheel Versions and Suffixes note in section 3 for full details.

uv pip install --index https://wheels.developerfirst.ibm.com/ppc64le/linux \
  <package-name>
  • --index — sets IBM DevPI as the primary index; uv checks it first before falling back to PyPI.
  • Any packages not on DevPI will still be resolved from PyPI.
  • uv prefers binary wheels by default — no extra flag needed.

Pinning to a specific IBM Power build: Specify the full suffixed version if you need a particular build:

uv pip install "numpy==2.2.6+ppc64le2" \
  --index https://wheels.developerfirst.ibm.com/ppc64le/linux

Using uv add with pyproject.toml

uv add is the recommended way to manage dependencies in a uv-based project. It installs the IBM Power wheel while recording only the base (canonical) version in pyproject.toml, eliminating the need to specify a platform-specific local version suffix and helping maintain portability.

uv add numpy==2.2.6 --index https://wheels.developerfirst.ibm.com/ppc64le/linux
# Installed: numpy==2.2.6+ppc64le2
# Recorded in pyproject.toml: "numpy==2.2.6"

This is the expected behavior. Although uv installs the IBM Power wheel (numpy==2.2.6+ppc64le2), it records the dependency using the canonical public version (numpy==2.2.6) in pyproject.toml, rather than the platform-specific local version.

Will uv sync from that pyproject.toml work on IBM Power?

Yes. When uv later resolves numpy==2.2.6 (for example, via uv sync), it can match and install the IBM Power wheel numpy==2.2.6+ppc64le2 from the IBM DevPI index. This allows dependencies to be specified using the canonical public version while still resolving to the appropriate platform-specific build.

uv sync
  → resolves  numpy==2.2.6  (from pyproject.toml)
  → matches   numpy==2.2.6+ppc64le2  on IBM DevPI  ✅
  → installs  numpy==2.2.6+ppc64le2

Verifying which build was actually installed

After running uv add or uv sync, use any of the following to confirm the exact build installed:

# Shows the full installed version including the local suffix
uv pip show numpy

# Lists all installed packages with their full versions
uv pip freeze | grep numpy

# Inspect the installed distribution metadata directly
python -c "import importlib.metadata; print(importlib.metadata.version('numpy'))"

Expected output (on IBM Power with the DevPI index):

2.2.6+ppc64le2

If the output shows 2.2.6 without a suffix, the PyPI wheel was picked up instead of the IBM Power build — verify your index configuration.

Using a Virtual Environment with uv

# Create a virtual environment
uv venv .venv

# Activate it
source .venv/bin/activate

# Install packages into the virtual environment
uv pip install --index https://wheels.developerfirst.ibm.com/ppc64le/linux \
  <package-name>

Installing from a requirements file

uv pip install -r requirements.txt \
  --index https://wheels.developerfirst.ibm.com/ppc64le/linux

Troubleshooting Tips

  • If a package is not found, verify the package name against the Simple Index.

  • Force a fresh install and bypass the cache:

    uv pip install --no-cache --reinstall \
      --index https://wheels.developerfirst.ibm.com/ppc64le/linux \
      <package-name>
  • Check the installed uv version:

    uv --version

Best Practices

  • Always use uv venv to create an isolated environment for each project.

  • Commit both pyproject.toml and uv.lock to ensure reproducible builds.

  • Keep uv up to date.

    pip install --upgrade uv

6️⃣ Learn by Example: General Usage Applications

Explore real-world examples built using Power-optimized wheels:

📘PyEco Repository

These examples demonstrate:

  • Best practices for Power systems
  • Practical usage of optimized libraries

7️⃣ Go Further: Build faster, easier and explore the Ecosystem

By leveraging IBM Power - optimized python wheels, teams can:

  • ⚡ Accelerate data analytics and ML pipelines
  • 🧠 Improve deep learning and generative AI performance
  • 🚀 Increase developer productivity by eliminating build-related issues

This curated ecosystem is continuously expanded based on real AI projects across the IBM Power ecosystem.

✅ Your Next Steps

Welcome to a faster, easier Python experience on IBM Power.

About

Python Ecosystem for Power Hints and Tips, Issue Tracking

Resources

Stars

33 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors