# wheel

> Command line tool for manipulating wheel files

- **URL**: https://www.freshcrate.ai/projects/wheel
- **Author**: pypi
- **Category**: Developer Tools
- **Latest version**: `0.47.0` (2026-04-22)
- **License**: Unknown
- **Source**: https://github.com/pypa/wheel/issues
- **Homepage**: https://pypi.org/project/wheel/
- **Language**: Python
- **GitHub**: 554 stars, 179 forks
- **Registry**: pypi (`wheel`)
- **Tags**: `packaging`, `pypi`, `wheel`

## Description

wheel
=====

This is a command line tool for manipulating Python wheel files, as defined in
`PEP 427`_. It contains the following functionality:

* Convert ``.egg`` archives into ``.whl``
* Unpack wheel archives
* Repack wheel archives
* Add or remove tags in existing wheel archives

.. _PEP 427: https://www.python.org/dev/peps/pep-0427/

Historical note
---------------

This project used to contain the implementation of the setuptools_ ``bdist_wheel``
command, but as of setuptools v70.1, it no longer needs ``wheel`` installed for that to
work. Thus, you should install this **only** if you intend to use the ``wheel`` command
line tool!

.. _setuptools: https://pypi.org/project/setuptools/

Documentation
-------------

The documentation_ can be found on Read The Docs.

.. _documentation: https://wheel.readthedocs.io/

Code of Conduct
---------------

Everyone interacting in the wheel project's codebases, issue trackers, chat
rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.

.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `0.47.0` | 2026-04-22 | High | - Added the `wheel info` subcommand to display metadata about wheel files without unpacking them ([\#639](https://github.com/pypa/wheel/issues/639)) - Fixed `WheelFile` raising `Missing RECORD file` when the wheel filename contains uppercase characters (e.g. `Django-3.2.5.whl`) but the `.dist-info` directory inside uses normalized lowercase naming ([\#411](https://github.com/pypa/wheel/issues/411)) |
| `0.46.3` | 2026-04-21 | Low | Imported from PyPI (0.46.3) |
| `0.46.2` | 2026-01-21 | Low | - Restored the `bdist_wheel` command for compatibility with `setuptools` older than v70.1 - Importing `wheel.bdist_wheel` now emits a `FutureWarning` instead of a `DeprecationWarning` - Fixed `wheel unpack` potentially altering the permissions of files outside of the destination tree with maliciously crafted wheels (CVE-2026-24049) |
| `0.46.1` | 2025-04-08 | Low | -   Temporarily restored the `wheel.macosx_libfile` module ([\#659](https://github.com/pypa/wheel/issues/659)) |
| `0.46.0` | 2025-04-03 | Low | -   Dropped support for Python 3.8 -   Removed the `bdist_wheel` setuptools command implementation and entry point. The `wheel.bdist_wheel` module is now just an alias to `setuptools.command.bdist_wheel`, emitting a deprecation warning on import. -   Removed vendored `packaging` in favor of a run-time dependency on it -   Made the `wheel.metadata` module private (with a deprecation warning if it's imported -   Made the `wheel.cli` package private (no deprecation warning) -   Fixed an exception w |
| `0.45.1` | 2024-11-23 | Low | -   Fixed pure Python wheels converted from eggs and wininst files having the ABI tag in the file name |
| `0.45.0` | 2024-11-08 | Low | -   Refactored the `convert` command to not need setuptools to be installed  -   Don't configure setuptools logging unless running `bdist_wheel`  -   Added a redirection from `wheel.bdist_wheel.bdist_wheel` to `setuptools.command.bdist_wheel.bdist_wheel` to improve compatibility with `setuptools`' latest fixes.      Projects are still advised to migrate away from the deprecated module and import the `setuptools`' implementation explicitly. (PR by @abravalheri) |
| `0.44.0` | 2024-08-04 | Low | -   Canonicalized requirements in METADATA file (PR by Wim Jeantine-Glenn) -   Deprecated the `bdist_wheel` module, as the code was migrated to `setuptools` itself |
| `0.43.0` | 2024-03-11 | Low | -   Dropped support for Python 3.7 -   Updated vendored `packaging` to 24.0 |
| `0.42.0` | 2023-11-26 | Low | -   Allowed removing build tag with `wheel tags --build ""` -   Fixed `wheel pack` and `wheel tags` writing updated `WHEEL` fields after a blank line, causing other tools to ignore them -   Fixed `wheel pack` and `wheel tags` writing `WHEEL` with CRLF line endings or a mix of CRLF and LF -   Fixed `wheel pack --build-number ""` not removing build tag from `WHEEL` (above changes by Benjamin Gilbert) |

## Citation

- HTML: https://www.freshcrate.ai/projects/wheel
- Markdown: https://www.freshcrate.ai/projects/wheel.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/wheel/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
