Wheel vs Egg
Wheel and Egg are both packaging formats that aim to support the
use case of needing an install artifact that doesn’t require building or
compilation, which can be costly in testing and production workflows.
The Egg format was introduced by setuptools in 2004, whereas the
Wheel format was introduced by PEP 427 in 2012.
Wheel is currently considered the standard for built and binary packaging for Python.
Here’s a breakdown of the important differences between Wheel and Egg.
- Wheel has an official PEP. Egg did not.
- Wheel is a distribution format, i.e a packaging
format. Egg was both a distribution format and a runtime
installation format (if left zipped), and was designed to be importable.
- Wheel archives do not include .pyc files. Therefore, when the
distribution only contains python files (i.e. no compiled extensions), and is
compatible with Python 2 and 3, it’s possible for a wheel to be “universal”,
similar to an sdist.
- Wheel uses PEP376-compliant
directories. Egg used
- Wheel has a richer file naming convention. A single
wheel archive can indicate its compatibility with a number of Python language
versions and implementations, ABIs, and system architectures.
- Wheel is versioned. Every wheel file contains the version of the wheel
specification and the implementation that packaged it.
- Wheel is internally organized by sysconfig path type,
therefore making it easier to convert to other formats.