Format du package WHL
Dans l’écosystème de développement Python, où la distribution efficace des packages est cruciale, les fichiers WHL (roue) sont devenus la solution standard pour distribuer et installer des packages Python de manière fiable et rapidement.
Informations sur l'archive des roues Python
WHL est un format de package construit pour Python qui contient tous les fichiers nécessaires à l’installation dans un état pré-compilé. Essentiellement, un fichier WHL est une archive zip avec une structure de répertoire spécial et une convention de dénomination qui permet aux gestionnaires de package de Python d’installer un logiciel sans exiger que le processus de construction s’exécute sur le système final de l’utilisateur. En raison de sa meilleure vitesse d’installation et de sa fiabilité, ce format a généralement supplanté le format et les distributions de source d’œufs plus anciens (.tar.gz) pour de nombreux produits Python.
Évolution des fichiers WHL
En 2012, PEP 427 a annoncé le format WHL, qui est officiellement appelé «roue», comme amélioration du format d’oeuf précédent. Daniel Holth l’a créé pour résoudre un certain nombre de problèmes avec l’écosystème d’emballage Python. Lorsque PIP, le programme d’installation du package de Python, a inclus la capacité d’installation des roues dans la version 1.4, qui a été mise à disposition début 2013, le format a connu une augmentation majeure. D’ici 2014, les principaux packages Python ont commencé à distribuer des fichiers de roues, et aujourd’hui, il est devenu la norme de facto pour la distribution des packages Python. Avec les avancées dans l’écosystème de l’emballage Python, le format continue d’évoluer; Les normes les plus récentes sont décrites dans PEP 600 et PEP 621.
Structure des fichiers WHL
Les fichiers WHL sont essentiellement des archives zip avec une structure interne spécifique qui suit les spécifications de l’emballage Python. À l’intérieur d’un fichier WHL, vous trouverez les modules Python compilés (fichiers .pyc), les métadonnées sur le package et toutes les extensions binaires nécessaires pour que le package fonctionne. Le nom de fichier lui-même suit une convention stricte qui code pour les informations importantes: nom de package, version, balises de compatibilité Python et architecture cible. Cette approche structurée permet aux gestionnaires de package de Python de déterminer rapidement si une roue est compatible avec le système cible sans avoir à extraire son contenu.
Méthodes de compression WHL
Les fichiers WHL utilisent les mêmes méthodes de compression que les fichiers zip réguliers car ce sont des archives zip fondamentalement. L’algorithme Deflate, qui équilibre le rapport de compression et la vitesse de décompression, est le plus souvent utilisé pour comprimer le contenu des fichiers WHL. Cette méthode garantit que les packages peuvent être installés rapidement tout en conservant des tailles de fichiers adaptées à la distribution. Ces fichiers sont compatibles avec des bibliothèques comme aspose.zip , qui facilitent l’extraction et la génération de packages WHL en utilisant une variété de techniques de compression, telles que dégonfler, déglas64tm, BZIP2 et autres.
Opérations prises en charge des archives WHL
À l’aide d’outils comme Aspose.zip pour Python .NET , les développeurs peuvent manipuler les fichiers WHL de diverses manières. Les packages de roues peuvent être créés, le contenu peut être inspecté, les fichiers peuvent être extraits de WHL sans installation, les métadonnées peuvent être modifiées et les roues modifiées peuvent être reconditionnées. Les mainteneurs de package Python qui ont besoin de déboguer des problèmes, d’adapter des packages pour des contextes uniques ou d’examiner les dépendances trouveront ces actions particulièrement utiles. Des commandes supplémentaires pour l’installation de fichiers WHL, la conversion des distributions de source en roues et la validation des packages de roues sont inclus dans la chaîne d’outils standard de Python, qui comprend également des outils PIP et Wheel.
Fichier WHL - Structure interne
Les fichiers WHL sont essentiellement des archives zip avec une structure interne spécifique qui suit les spécifications de l’emballage Python. À l’intérieur d’un fichier whl, vous trouverez:
- Modules Python compilés: Fichiers .pyc précompilés qui peuvent être directement chargés sans compilation
- Métadonnées du package: Informations sur l’auteur, la version, les dépendances et les exigences du package
- Extensions binaires: Bibliothèques compilées spécifiques à la plate-forme nécessaire pour la fonctionnalité du package
- Convention de dénomination structurée: Nom de fichier qui code pour les informations critiques:
- Nom du package
- Numéro de version
- Tags de compatibilité Python
- Architecture cible (par exemple, win_amd64, manylinux1_x86_64)
Cette organisation interne standardisée comprend:
- Contenu du package racine: Le code et les ressources Python réels
- .Dist-info Répertoire: Contient des fichiers de métadonnées comme les métadonnées, la roue et l’enregistrement
- .Répertoire de données (facultatif): détient les fichiers et ressources de données non-python
Cette approche structurée permet une validation rapide et une installation de packages tout en maintenant la sécurité grâce à la vérification du hachage.
Popularité des fichiers WHL et support
En raison de son efficacité et de sa fiabilité, WHL est devenu la méthode de distribution préférée pour les packages Python. Les fichiers de roue sont désormais accessibles pour presque tous les packages répertoriés sur l’index Python Package (PYPI). Ce format est entièrement pris en charge par l’écosystème Python, avec des services publics tels que la priorité des roues PIP sur les distributions de source où elles sont disponibles. Quel que soit l’environnement de programmation, les développeurs Python utilisent toujours ce format car il fonctionne avec tous les principaux systèmes d’exploitation, y compris Windows, MacOS et Linux.
Exemples d'utilisation des fichiers WHL
Les fichiers WHL sont essentiels pour les développeurs Python qui cherchent à distribuer et à installer efficacement les packages. Travailler avec les fichiers WHL permet aux développeurs de personnaliser leur flux de travail de gestion des packages. Dans les exemples de code suivants, nous explorerons comment utiliser les bibliothèques pour créer et extraire des fichiers WHL, démontrant des techniques d’inspection et de modification des packages. Ces exemples vous aideront à comprendre comment tirer parti des fichiers WHL dans vos projets de développement Python pour la gestion et le déploiement des dépendances plus lisses.
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);
}
}
}
![]() | ![]() | ![]() |
---|
Informations supplémentaires sur les zip-archives
Les gens ont demandé
1. Comment installer un fichier WHL dans Python?
Pour installer un fichier WHL, utilisez la commande PIP: PIP install filename.whl
. Cette commande fonctionne sur toutes les plates-formes et est le moyen standard d’installer des packages de roues dans Python. Si vous travaillez dans un environnement virtuel, assurez-vous qu’elle est activée en premier.
2. Puis-je créer mes propres fichiers WHL pour la distribution?
Oui, vous pouvez créer des fichiers WHL à l’aide des outils de construction de Python. Tout d’abord, assurez-vous que votre projet a un fichier SETUP.py ou pyproject.toml approprié, puis exécutez Python -M build --wheel
dans votre répertoire de projet. Cela générera un fichier WHL dans le DIST / Directory que vous pouvez distribuer ou télécharger sur PYPI.
3. Les fichiers WHL sont-ils spécifiques à la plate-forme?
Cela dépend du contenu du package. Les roues «Pure Python» (marquées de la balise «py3») fonctionnent sur toutes les plates-formes. Cependant, les roues contenant des extensions compilées (marquées de balises spécifiques à la plate-forme comme ‘win_amd64’ ou ‘manylinux’) sont spécifiques à la plate-forme et ne fonctionneront que sur des systèmes de correspondance. C’est pourquoi certains packages offrent plusieurs fichiers de roues pour différentes plates-formes.