WHL -pakketindeling
In het Python Development Ecosystem, waar efficiënte pakketverdeling cruciaal is, zijn WHL (Wheel) -bestanden de standaardoplossing geworden voor het distribueren en installeren van Python -pakketten betrouwbaar en snel.
Python Wheel Archive Info
WHL is een opgebouwde pakketindeling voor Python dat alle bestanden bevat die nodig zijn voor de installatie in een vooraf gecompileerde status. In essentie is een WHL -bestand een zip -archief met een speciale directorystructuur en naamgevingsconventie waarmee Python’s pakketmanagers software kunnen installeren zonder dat het bouwproces op het systeem van de eindgebruiker wordt uitgevoerd. Vanwege de betere installatiesnelheid en betrouwbaarheid heeft dit formaat over het algemeen het oudere.egg -formaat en brongistributies (.tar.gz) vervangen voor veel Python -producten.
Evolutie van WHL -bestanden
In 2012 kondigde PEP 427 het WHL -formaat aan, dat formeel ‘wiel’ wordt genoemd, als een verbetering van het vorige eierformaat. Daniel Holth heeft het gemaakt om een aantal problemen op te lossen met het Python Packaging Ecosystem. Toen Pip, het pakketinstallatieprogramma van Python, wielinstallatiemogelijkheden in versie 1.4, die begin 2013 beschikbaar werd gesteld, zag het formaat een grote toename in gebruik. Tegen 2014 begonnen grote Python -pakketten wielbestanden te distribueren, en vandaag is het de feitelijke standaard voor Python -pakketverdeling geworden. Met vooruitgang in het Python -verpakkingsecosysteem blijft het formaat evolueren; De meest recente normen zijn uiteengezet in PEP 600 en PEP 621.
Structuur van WHL -bestanden
WHL -bestanden zijn in wezen zip -archieven met een specifieke interne structuur die de Python -verpakkingsspecificaties volgt. In een WHL -bestand vindt u de gecompileerde Python -modules (.pyc -bestanden), metagegevens over het pakket en eventuele binaire extensies die nodig zijn om het pakket te laten functioneren. De bestandsnaam zelf volgt een strikte conventie die codeert voor belangrijke informatie: pakketnaam, versie, python compatibiliteitstags en doelarchitectuur. Deze gestructureerde aanpak stelt de pakketbeheerders van Python in staat om snel te bepalen of een wiel compatibel is met het doelsysteem zonder de inhoud te hoeven extraheren.
Methoden van WHL -compressie
WHL -bestanden maken gebruik van dezelfde compressiemethoden als reguliere zip -bestanden omdat ze fundamenteel zip -archieven zijn. Het deflate algoritme, dat de compressieverhouding en decompressiesnelheid in evenwicht houdt, wordt het meest gebruikt om de inhoud van WHL -bestanden te comprimeren. Deze methode garandeert dat pakketten snel kunnen worden geïnstalleerd, terwijl de distributie-geschikte bestandsgroottes worden behouden. Deze bestanden zijn compatibel met bibliotheken zoals aspose.zip , die de extractie en het genereren van WHL -pakketten vergemakkelijken met behulp van een verscheidenheid aan compressietechnieken, zoals Deflate, Deflate64TM, BZIP2 en anderen.
WHL -archief ondersteunde operaties
Met behulp van tools zoals aspose.zip voor python .net , kunnen ontwikkelaars WHL -bestanden op verschillende manieren manipuleren. Wielpakketten kunnen worden gemaakt, de inhoud kan worden geïnspecteerd, bestanden kunnen worden geëxtraheerd uit WHL zonder installatie, metadata kunnen worden gewijzigd en aangepaste wielen kunnen opnieuw worden verpakt. Python -pakketbeheersers die problemen moeten debuggen, pakketten moeten aanpassen voor unieke contexten of onderzoeken die afhankelijkheden onderzoeken, zullen deze acties bijzonder nuttig vinden. Aanvullende opdrachten voor het installeren van WHL -bestanden, het converteren van bronverdelingen naar wielen en het valideren van wielpakketten zijn opgenomen in de standaard toolchain van Python, die ook PIP- en wielgereedschap omvat.
WHL -bestand - interne structuur
WHL -bestanden zijn in wezen zip -archieven met een specifieke interne structuur die de Python -verpakkingsspecificaties volgt. In een WHL -bestand vindt u:
- Python -modules gecompileerd: Precompileerde .pyc -bestanden die rechtstreeks kunnen worden geladen zonder compilatie
- Pakket metagegevens: Informatie over de pakketauteur, versie, afhankelijkheden en vereisten
- Binaire extensies: Platformspecifieke gecompileerde bibliotheken die nodig zijn voor de pakketfunctionaliteit
- Gestructureerde naamgevingsconventie: Bestandsnaam die codeert voor kritieke informatie:
- Pakketnaam
- Versienummer
- Python -compatibiliteitstags
- Doelarchitectuur (bijv. Win_AMD64, veellinux1_x86_64)
Deze gestandaardiseerde interne organisatie omvat:
- Rootpakket inhoud: De werkelijke Python -code en bronnen
- . Dist-Info Directory: Bevat metadata-bestanden zoals metagegevens, wiel en record
- . Gegevensdirectory (optioneel): bevat niet-netwerk gegevensbestanden en bronnen
Deze gestructureerde aanpak zorgt voor snelle validatie en installatie van pakketten met behoud van beveiliging door hash -verificatie.
Populariteit van de WHL -bestanden en ondersteuning
Vanwege de effectiviteit en betrouwbaarheid ervan is WHL naar voren gekomen als de voorkeursdistributiemethode voor Python -pakketten. Wielbestanden zijn nu toegankelijk voor bijna elk pakket dat wordt vermeld op de Python Package Index (PYPI). Dit formaat wordt volledig ondersteund door het Python -ecosysteem, met hulpprogramma’s zoals PIP die wielen voorrang geeft over brongistributies waar ze beschikbaar zijn. Ongeacht de programmeeromgeving, gebruiken Python -ontwikkelaars dit formaat altijd omdat het werkt met alle belangrijkste besturingssystemen, inclusief Windows, MacOS en Linux.
Voorbeelden van het gebruik van WHL -bestanden
WHL -bestanden zijn essentieel voor Python -ontwikkelaars die pakketten efficiënt willen distribueren en installeren. Door met WHL -bestanden programmatisch te werken, kunnen ontwikkelaars hun pakketbeheerworkflow aanpassen. In de volgende codevoorbeelden zullen we onderzoeken hoe u bibliotheken kunt gebruiken om WHL -bestanden te maken en te extraheren, waarbij we technieken worden aangetoond voor pakketinspectie en -aanpassing. Deze voorbeelden helpen u te begrijpen hoe u WHL -bestanden kunt benutten in uw Python -ontwikkelingsprojecten voor soepeler afhankelijkheidsbeheer en implementatie.
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);
}
}
}
![]() | ![]() | ![]() |
---|
Aanvullende informatie over zip-archieven
Mensen hebben het gevraagd
1. Hoe installeer ik een WHL -bestand in Python?
Gebruik de opdracht PIP om een WHL -bestand te installeren: PIP Installbestandsnaam.whl
. Deze opdracht werkt op alle platforms en is de standaard manier om wielpakketten in Python te installeren. Als u in een virtuele omgeving werkt, zorg er dan voor dat deze eerst wordt geactiveerd.
2. Kan ik mijn eigen WHL -bestanden maken voor distributie?
Ja, u kunt WHL -bestanden maken met behulp van de build -tools van Python. Zorg er eerst voor dat uw project een juiste setup.py of pyproject.toml -bestand heeft en vervolgens `python -m build -wheel ‘in uw projectmap uitvoert. Dit genereert een WHL -bestand in de DIST/ Directory die u kunt distribueren of uploaden naar PYPI.
3. Zijn WHL-bestanden platformspecifiek?
Het hangt af van de pakketinhoud. ‘Pure Python’ wielen (gemarkeerd met ‘Py3’ tag) werken op alle platforms. Wielen die gecompileerde extensies bevatten (gemarkeerd met platformspecifieke tags zoals ‘Win_AMD64’ of ‘MEYLINUX’) zijn echter platformspecifiek en zullen alleen werken aan matching-systemen. Daarom bieden sommige pakketten meerdere wielbestanden voor verschillende platforms.