Formato do pacote WHL
No ecossistema de desenvolvimento do Python, onde a distribuição eficiente de pacotes é crucial, os arquivos WHL (roda) se tornaram a solução padrão para distribuir e instalar pacotes Python de maneira confiável e rápida.
Informações de arquivo de roda Python
A WHL é um formato de pacote embutido para Python que contém todos os arquivos necessários para a instalação em um estado pré-compilado. Em essência, um arquivo WHL é um Arquivo Zip com uma estrutura de diretório especial e uma convenção de nomenclatura que permite que os gerentes de pacotes da Python instalem software sem exigir que o processo de compilação seja executado no sistema do usuário final. Devido à sua melhor velocidade de instalação e confiabilidade, esse formato geralmente suplantou o formato mais antigo. EGG e distribuições de origem (.tar.gz) para muitos produtos Python.
Evolução dos arquivos WHL
Em 2012, a PEP 427 anunciou o formato WHL, que é formalmente chamado de “roda”, como um aprimoramento no formato anterior de ovos. Daniel Holth o criou para corrigir vários problemas com o ecossistema de embalagens Python. Quando o Pip, o instalador do pacote do Python, incluiu a capacidade de instalação da roda na versão 1.4, que foi disponibilizada no início de 2013, o formato viu um grande aumento em uso. Até 2014, os principais pacotes do Python começaram a distribuir arquivos de roda e hoje se tornou o padrão de fato para a distribuição do pacote Python. Com os avanços no ecossistema de embalagem Python, o formato continua evoluindo; Os padrões mais recentes são descritos no PEP 600 e PEP 621.
Estrutura dos arquivos WHL
Os arquivos WHL são essencialmente arquivos zip com uma estrutura interna específica que segue as especificações de embalagem Python. Dentro de um arquivo WHL, você encontrará os módulos Python compilados (arquivos .pyc), metadados sobre o pacote e qualquer extensão binária necessária para que o pacote funcione. O nome do arquivo em si segue uma convenção estrita que codifica informações importantes: nome do pacote, versão, tags de compatibilidade do Python e arquitetura de destino. Essa abordagem estruturada permite que os gerentes de pacotes da Python determine rapidamente se uma roda é compatível com o sistema de destino sem precisar extrair seu conteúdo.
Métodos de compressão WHL
Os arquivos WHL empregam os mesmos métodos de compactação que os arquivos ZIP regulares, porque são fundamentalmente arquivos de zip. O algoritmo deflate, que equilibra a taxa de compressão e a velocidade de descompressão, é usada com mais frequência para comprimir o conteúdo dos arquivos WHL. Este método garante que os pacotes possam ser instalados rapidamente, mantendo os tamanhos de arquivo apropriados à distribuição. Esses arquivos são compatíveis com bibliotecas como como Aspose.zip , que facilitam a extração e geração de pacotes WHL usando uma variedade de técnicas de compactação, como deflatar, esvaziar64TM, BZIP2 e outros.
Operações apoiadas pelo arquivo WHL
Usando ferramentas como Aspose.zip for python .net , os desenvolvedores podem manipular arquivos WHL de várias maneiras. Pacotes de roda podem ser criados, o conteúdo pode ser inspecionado, os arquivos podem ser extraídos do WHL sem instalação, os metadados podem ser alterados e as rodas modificadas podem ser reembaladas. Os mantenedores de pacotes do Python que precisam depurar problemas, adaptar pacotes para contextos exclusivos ou examinar dependências acharão essas ações especialmente úteis. Comandos adicionais para instalar arquivos WHL, converter distribuições de origem em rodas e validação de pacotes de rodas estão incluídos na cadeia de ferramentas padrão do Python, que também inclui ferramentas de PIP e roda.
Arquivo WHL - Estrutura interna
Os arquivos WHL são essencialmente arquivos zip com uma estrutura interna específica que segue as especificações de embalagem Python. Dentro de um arquivo WHL, você encontrará:
- Módulos Python compilados: Arquivos .pyc pré -compilados que podem ser carregados diretamente sem compilação
- Metadados do pacote: Informações sobre o autor do pacote, versão, dependências e requisitos
- Extensões binárias: Bibliotecas compiladas específicas da plataforma necessárias para a funcionalidade do pacote
- Convenção de nomeação estruturada: Nome do arquivo que codifica informações críticas:
- Nome do pacote
- Número da versão
- Tags de compatibilidade com Python
- Arquitetura de destino (por exemplo, Win_amd64, ManyLinux1_x86_64)
Esta organização interna padronizada inclui:
- Conteúdo do pacote raiz: O código e os recursos reais do Python
- .dist-info directory: Contains metadata files like METADATA, WHEEL, and RECORD
- .data directory (optional): Holds non-Python data files and resources
Essa abordagem estruturada permite validação rápida e instalação de pacotes, mantendo a segurança através da verificação de hash.
Popularidade dos arquivos e suporte WHL
Devido à sua eficácia e confiabilidade, a WHL emergiu como o método de distribuição preferido para pacotes Python. Os arquivos da roda agora estão acessíveis para quase todos os pacotes listados no Python Package Index (PYPI). Esse formato é totalmente suportado pelo ecossistema Python, com serviços públicos como a precedência de rodas da Pip, sobre as distribuições de origem onde estão disponíveis. Independentemente do ambiente de programação, os desenvolvedores do Python sempre usam esse formato, pois funciona com todos os principais sistemas operacionais, incluindo Windows, MacOS e Linux.
Exemplos de uso de arquivos WHL
Os arquivos WHL são essenciais para os desenvolvedores do Python que desejam distribuir e instalar pacotes com eficiência. Trabalhar com arquivos WHL programaticamente permite que os desenvolvedores personalizem seu fluxo de trabalho de gerenciamento de pacotes. Nos exemplos de código a seguir, exploraremos como usar as bibliotecas para criar e extrair arquivos WHL, demonstrando técnicas para inspeção e modificação de pacotes. Esses exemplos ajudarão você a entender como aproveitar os arquivos WHL em seus projetos de desenvolvimento do Python para um gerenciamento e implantação de dependência mais suaves.
Create WHL via C#
using (var archive = new Archive())
{
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
archive.Save("result_archive.whl");
}
Compress and encrypt data file using Archive.Save method via C#
using (var whlFile = File.Open("EncrypedWithAES256.whl", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$", EcryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(whlFile);
}
}
}
![]() | ![]() | ![]() |
---|
Informações adicionais sobre whl-archives
As pessoas têm perguntado
1. Como instalo um arquivo WHL no Python?
Para instalar um arquivo WHL, use o comando pip: pip install filename.whl
. Este comando funciona em todas as plataformas e é a maneira padrão de instalar pacotes de rodas no Python. Se você estiver trabalhando em um ambiente virtual, verifique se está ativado primeiro.
2. Posso criar meus próprios arquivos WHL para distribuição?
Sim, você pode criar arquivos WHL usando as ferramentas de construção do Python. Primeiro, verifique se o seu projeto possui um arquivo Setup.py ou pyProject.toml adequado e execute python -m Build - -Wheel
no diretório do seu projeto. Isso gerará um arquivo WHL no diretório Dist/ que você pode distribuir ou fazer upload para o PYPI.
3. Os arquivos WHL são específicos da plataforma?
Depende do conteúdo do pacote. As rodas ‘python’ (marcadas com tag ‘py3’) funcionam em todas as plataformas. No entanto, as rodas que contêm extensões compiladas (marcadas com tags específicas da plataforma como ‘Win_amd64’ ou ‘ManyLinux’) são específicas da plataforma e funcionam apenas em sistemas de correspondência. É por isso que alguns pacotes oferecem vários arquivos de roda para diferentes plataformas.