Wheel vs Egg

Wheel e Egg são formatos de empacotamento que visam oferecer suporte ao caso de uso de necessidade de um artefato de instalação que não requer construção ou compilação, o que pode ser caro em testes e fluxos de trabalho de produção.

O formato Egg foi introduzido por setuptools em 2004, enquanto o formato Wheel foi introduzido pela PEP 427 em 2012.

Wheel é atualmente considerado o padrão para o empacotamento contruído e binário para Python.

Aqui está uma análise das diferenças importantes entre Wheel e Egg.

  • Wheel tem uma especificação de padrão oficial. Egg não tinha.

  • Wheel é um formato de distribuição, ou seja, um formato de empacotamento. 1 Egg era um formato de distribuição e um formato de instalação em tempo de execução (se deixado compactado), e foi projetado para ser importável.

  • Os arquivos Wheel não incluem arquivos .pyc. Portanto, quando a distribuição contém apenas arquivos Python (ou seja, sem extensões compiladas) e é compatível com Python 2 e 3, é possível que um wheel seja “universal”, semelhante a um sdist.

  • Wheel usa diretórios .dist-info compatíveis com a PEP376. Egg usava .egg-info.

  • Wheel tem uma convenção de nomenclatura de arquivo mais rica. Um único arquivo de wheel pode indicar sua compatibilidade com várias versões e implementações da linguagem Python, ABIs e arquiteturas de sistema.

  • Wheel é versionado. Cada arquivo wheel contém a versão da especificação wheel e a implementação que a empacotou.

  • Wheel é internamente organizado pelo tipo de caminho sysconfig, portanto tornando mais fácil converter para outros formatos.


1

Circunstancialmente, em alguns casos, wheels podem ser usados como um formato de tempo de execução importável, embora não haja suporte oficial a isso no momento.