Python wheels are great. Building them across Mac, Linux, Windows, on multiple versions of Python, is not.

cibuildwheel is here to help. cibuildwheel runs on your CI server - currently it supports Azure Pipelines, Travis CI, AppVeyor, GitHub Actions and CircleCI - and it builds and tests your wheels across all of your platforms.

What does it do?

macOS x86_64 Windows 64bit Windows 32bit manylinux x86_64 manylinux i686 manylinux aarch64 manylinux ppc64le manylinux s390x
CPython 2.7 ✅¹ ✅¹
CPython 3.5 ✅²
CPython 3.6 ✅²
CPython 3.7 ✅²
CPython 3.8 ✅²
CPython 3.9³ 🛠 🛠 🛠 🛠 🛠 🛠 🛠
PyPy 2.7 v7.3.0
PyPy 3.6 v7.3.0

¹ Not supported on Travis
² Beta support until Travis CI fixes a bug
³ Python 3.9 is not yet ABI stable, so you shouldn't publish wheels with it yet. But if you want to check that your wheels build on Python 3.9, try our python3.9 branch!

  • Builds manylinux, macOS and Windows wheels for CPython and PyPy using Azure Pipelines, Travis CI, AppVeyor, and CircleCI
  • Bundles shared library dependencies on Linux and macOS through auditwheel and delocate
  • Runs the library test suite against the wheel-installed version of your library

Usage

cibuildwheel currently works on Travis CI, Azure Pipelines, AppVeyor and GitHub Actions to build wheels for all three supported platforms (Linux, macOS, Windows). On CircleCI Linux and macOS wheels can be built.

Linux macOS Windows
Azure Pipelines
Travis CI
AppVeyor
GitHub Actions
CircleCI

cibuildwheel is not intended to run on your development machine. Because it uses system Python from Python.org it will try to install packages globally - not what you expect from a build tool! Instead, isolated CI services like Travis CI, CircleCI, Azure Pipelines and AppVeyor are ideal.

To get started, head over to the setup guide.