Python Wheels#
Les Python wheels (*.whl
) sont le moyen standard de distribuer les modules Python. Ils sont pris en charge dans Blender pour créer des Extensions Python autonomes.
Directives#
Par convention, localisez toujours les fichiers sous
./wheels/
.
Exigences#
Les “Wheels” doivent être regroupées sans modification à partir de l'index du package Python.
Les “Wheels” doivent inclure leurs dépendances.
Les noms de fichiers des “Wheels” doivent correspondre à la spécification de la distribution binaire de Python : voir la documentation. Les Wheels téléchargées à partir de l’index des packages Python suivront cette convention.
Utilisez des barres obliques comme séparateurs de chemin lorsque vous les répertoriez sur le manifeste.
Comment regrouper les Wheels#
Les wheels Python (*.whl
) peuvent être regroupées en suivant les étapes suivantes.
- Téléchargement de Wheels
Télécharger la “wheel” dans le répertoire
./wheels/
.Pour les “wheels” indépendantes de la plate-forme, cet exemple télécharge
jsmin
:pip wheel jsmin -w ./wheels
Pour les “wheels” contenant des fichiers binaires compilés, les “wheels” de toutes les plates-formes prises en charge doivent être incluses :
Cet exemple télécharge
pillow
- le module de manipulation d’images populaire.pip download pillow --dest ./wheels --only-binary=:all: --python-version=3.11 --platform=macosx_11_0_arm64 pip download pillow --dest ./wheels --only-binary=:all: --python-version=3.11 --platform=manylinux_2_28_x86_64 pip download pillow --dest ./wheels --only-binary=:all: --python-version=3.11 --platform=win_amd64
Les identifiants de plateforme disponibles sont répertoriés sur la page de téléchargement de Pillow.
- Mise à jour du manifeste
Dans
blender_manifest.toml
inclure les “wheels” sous forme de liste de chemins, par exemple.wheels = [ "./wheels/pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", "./wheels/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", "./wheels/pillow-10.3.0-cp311-cp311-win_amd64.whl", ]
Maintenant, l’installation du package extraira la “wheel” dans le répertoire propre aux
site-packages
de l’extension.- Exécution
Une fois l’extension installée, vous pouvez vérifier que le module est en cours de chargement en l’important dans la console Python et en affichant son emplacement :
import PIL print(PIL.__file__)
Constructions de plate-forme#
Les Wheels peuvent avoir un impact important sur la taille d’une extension. Pour atténuer ce problème, il est possible de créer différents fichiers zip d’extension pour chaque plate-forme unique requise.
Pour cela, vous devez utiliser l’option --split-platforms
de la commande build.
blender --command extension build --split-platforms
Exemple#
Extrait du fichier manifeste :
id = "my_addon_with_wheels"
version = "1.0.0"
platforms = ["windows-x64", "macos-x64"]
wheels = [
"./wheels/pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl",
"./wheels/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"./wheels/pillow-10.3.0-cp311-cp311-win_amd64.whl",
]
Fichiers générés à partir de --split-platforms
:
my_addon_with_wheels-1.0.0-windows_x64.zip
my_addon_with_wheels-1.0.0-macos_x64.zip
Note
Même s’il existe une wheel Linux-uniquement, aucun fichier zip Linux n’est généré. Cela se produit parce que le champ platforms
ne contient que Mac et Windows.