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 GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, 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.3
PyPy 3.6 v7.3.3
PyPy 3.7 (beta) v7.3.3

¹ Not supported on Travis
² Only supported on Travis
³ Beta support until Travis CI fixes a bug

  • 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


cibuildwheel currently works on Travis CI, Azure Pipelines, AppVeyor, GitHub Actions, CircleCI, and Gitlab CI. Check the table below for supported platforms on each service:

Linux macOS Windows Linux ARM
Azure Pipelines ✴️¹
Travis CI
GitHub Actions ✴️¹
Gitlab CI

¹ Requires a "third-party build host"; expected to work with cibuildwheel but not directly tested by our CI.

cibuildwheel is not intended to run on your development machine. Because it uses system Python from it will try to install packages globally - not what you expect from a build tool! Instead, isolated CI services like those mentioned above are ideal.

To get started, head over to the setup guide.