Python-hjul

Att göra

  • Riktlinjer för hjul som väljer vilken version som ska användas.

  • Färdigställa en policy för hur motstridiga versioner av ett hjul ska hanteras.

Python wheels (*.whl) är standardmetoden för att distribuera Python-moduler. De stöds i Blender för att göra fristående Python Extensions.

Riktlinjer

  • Enligt konvention ska filerna alltid placeras under ./wheels/.

Krav

  • Hjul måste buntas ihop omodifierade från Pythons paketindex.

  • Wheels måste inkludera sina beroenden.

  • Hjulets filnamn måste överensstämma med Pythons binära distributionsspecifikation: se docs. Wheels som laddas ner från Pythons paketindex kommer att följa denna konvention.

  • Använd snedstreck som sökvägsavgränsare när du listar dem på manifest.

Hur man buntar hjul

Python-hjul (*.whl) kan buntas ihop med hjälp av följande steg.

Nedladdning av hjul

Ladda ner hjulet till katalogen ./wheels/.

För hjul som är plattformsoberoende hämtar detta exempel jsmin:

pip wheel jsmin -w ./wheels

För hjul som innehåller binärt kompilerade filer bör hjul för alla plattformar som stöds inkluderas:

Detta exempel hämtar pillow - den populära bildmanipuleringsmodulen.

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

De tillgängliga plattformsidentifierarna finns listade på pillows nedladdningssida.

Uppdatera manifestet

I blender_manifest.toml inkludera hjulen som en lista med sökvägar, t.ex.

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",
]

När du nu installerar paketet kommer hjulet att extraheras till tilläggets egen katalog site-packages.

Kör

När tillägget har installerats kan du kontrollera att modulen läses in genom att importera den i Python-konsolen och skriva ut dess plats:

import PIL
print(PIL.__file__)

Byggande av plattformar

Hjul kan allvarligt påverka storleken på ett tillägg. För att mildra detta är det möjligt att bygga olika zip-filer för tillägg för varje unik plattform som krävs.

För detta måste du använda alternativet –split-platforms från kommandot build.

blender --command extension build --split-platforms

Exempel

Utdrag ur manifestfilen:

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",
]

Genererade filer från –split-platforms:

  • my_addon_med_hjul-1.0.0-windows_x64.zip

  • my_addon_med_hjul-1.0.0-macos_x64.zip

Observera

Trots att det finns ett hjul för enbart Linux genereras ingen zip-fil för Linux. Detta beror på att fältet plattforms endast innehåller Mac och Windows.