Python Wheels

What are wheels?

Wheels are the new standard of python distribution and are intended to replace eggs. Support is offered in pip >= 1.4 and setuptools >= 0.8.

Advantages of wheels

  1. Faster installation for pure python and native C extension packages.
  2. Avoids arbitrary code execution for installation. (Avoids setup.py)
  3. Installation of a C extension does not require a compiler on Windows or macOS.
  4. Allows better caching for testing and continuous integration.
  5. Creates .pyc files as part of installation to ensure they match the python interpreter used.
  6. More consistent installs across platforms and machines.

What is this list?

This site shows the top 360 most-downloaded packages on PyPI showing which have been uploaded as wheel archives.

  • Green packages offer wheels,
  • White packages have no wheel archives uploaded (yet!).

Packages that are known to be deprecated are not included. (For example distribute). If your package is incorrectly listed, please create a ticket.

This is not the official website for wheels, just a nice visual way to measure adoption. To see the authoritative guide on wheels and other aspects of python packaging, see the Python Packaging User Guide.

My package is white. What can I do?

Pure Python

If you have a pure python package that is not using 2to3 for Python 3 support, you've got it easy. Make sure Wheel is installed…

pip install wheel

…and when you'd normally run python setup.py sdist upload, run instead python setup.py sdist bdist_wheel upload. For a more in-depth explanation, see this guide on sharing your labor of love.

Note: If your project is python 2 and 3 compatible you can create a universal wheel distribution. Create a file called setup.cfg with the following content and upload your package.

[bdist_wheel]
universal = 1

Warning: If your project has optional C extensions, it is recommended not to publish a universal wheel, because pip will prefer the wheel over a source installation.

C extensions

PyPI currently allows uploading platform-specific wheels for Windows, macOS and Linux. It is useful to create wheels for these platforms, as it avoids the need for your users to compile the package when installing.

You will need to have access to the platform you are building for.

Something's wrong with this page!

Fantastic, a problem found is a problem fixed. Please create a ticket!

You can also submit a pull-request.

Note: Requests for behavioural changes in the packaging tools themselves should be directed to distutils-sig and the Python Packaging Authority.

Thanks

Thanks to the Python 3 Wall of Superpowers for the concept and making their code open source, Donald Stufft for his help on IRC, James Turnbull for the intro copy, and George Hickman for pointing me in the right direction as usual.

pythonwheels.com requires javascript to be enabled to display the list of packages.