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.
- Understand the Value - Why optimized wheels matter on IBM Power
- Check Compatibility - Architecture, processors, and Python versions
- Discover Available Wheels - Find packages and versions easily
- Install with pip - Use familiar workflows with DevPI
- Install with uv - Fast, modern package management with uv
- Explore Examples - General usage applications
- Go Further - Build faster, easier and explore the Ecosystem
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
Before getting started, confirm your environment:
- 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.
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/linuxTo see all available builds for a package, browse the Simple Index.
To explore all available versions, Python compatibility, and licenses, use the indexes below:
- DevPiWheelsIndex.md - Full list of wheels with versions, build suffixes, licenses and associated CVEs
- Python version–specific indexes - Quickly filter wheels for:
- Python 3.9
- Python 3.10
- Python 3.11
- Python 3.12
- Python 3.13
- Python 3.14
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
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-
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
-
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-binaryto avoid unnecessary source builds.
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.
# Using pip
pip install uv
# Or using the official standalone installer
curl -LsSf https://astral.sh/uv/install.sh | shIBM 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;uvchecks it first before falling back to PyPI.- Any packages not on DevPI will still be resolved from PyPI.
uvprefers 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/linuxuv 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.
# 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>uv pip install -r requirements.txt \
--index https://wheels.developerfirst.ibm.com/ppc64le/linux-
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
uvversion:uv --version
-
Always use
uv venvto create an isolated environment for each project. -
Commit both
pyproject.tomlanduv.lockto ensure reproducible builds. -
Keep
uvup to date.pip install --upgrade uv
Explore real-world examples built using Power-optimized wheels:
-
Package Index & Metadata:
-
General Usage Examples:
These examples demonstrate:
- Best practices for Power systems
- Practical usage of optimized libraries
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.
- 🔎 Browse available wheels -> DevPIWheelsIndex.md
- 📦 Identify Python version specific packages → Wheel Indexes
▶️ Try examples → PyEco Examples- 🧪 Build and optimize your AI/ML workloads on IBM Power
Welcome to a faster, easier Python experience on IBM Power.