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
.
This site shows the top 360 most-downloaded packages on PyPI showing which have been uploaded as wheel archives.
Packages that are known to be deprecated are not included. (For example distribute). If your package is incorrectly listed, please create a ticket.
This used to show the all-time most-downloaded packages. The all-time list is no longer available, and the packages in the last-30-days list will change to reflect more closely what the Python community is using.
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.
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
, run instead python setup.py sdist bdist_wheel
. 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.
Note: To include your project's license file in the wheel distribution, specify the license_files
key in the [metadata]
section. This helps comply with many open source licenses that require the license text to be included in every distributable artifact of the project. This option requires wheel 0.32 or newer.
[metadata] license_files = LICENSE
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. Projects like cibuildwheel or multibuild provide tooling and guidance to build binary wheels for different platforms using various continuous integration (CI) services.
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 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.
Thanks also to the many contributors.