Python Wheels

Python wheels (*.whl) стандартним шляхом для розподілення Python модулів. Вони підтримуються в Blender, що зробити самостійні Python Розширення.

Guidelines – Настанови

  • За конвенцією, треба завжди розміщати файли під ./wheels/.

Вимоги

  • Wheels повинен бути в пакунку, немодифікований із Python’s package index.

  • Wheels повинен містити їх залежності.

  • Назви файлів Wheels повинні збігатись з Python з специфікацією двійкового розподілення дивіться документацію. Wheels завантажений з Python індекс пакунку буде слідувати цим конвенціям.

  • Використовуйте прямі слеши («/») як розділення шляху коли перелічуєте їх в маніфесті.

Як Об’єднати Wheels

Python wheels (*.whl) може бути об’єднаний використовуючи наступні кроки.

Завантаження Wheels

Завантажте wheel до директорії ./wheels/.

Для wheels який незалежний від платформи, цей приклад завантажує jsmin:

pip wheel jsmin -w ./wheels

Для wheels який містить скомпільовані двійкові файли, wheels для всіх підтримуваних платформ повинен містити:

Цей приклад завантажує pillow - популярний модуль з маніпуляціями над зображеннями.

pip download pillow --dest ./wheels --only-binary=:all: --python-version=3.13 --platform=macosx_11_0_arm64
pip download pillow --dest ./wheels --only-binary=:all: --python-version=3.13 --platform=manylinux_2_28_x86_64
pip download pillow --dest ./wheels --only-binary=:all: --python-version=3.13 --platform=win_amd64

Список доступних ідентифікаторів платформ знаходиться на pillow’s download page.

Оновити Маніфест

В blender_manifest.toml включіть wheels як список шляхів, приклад.

wheels = [
   "./wheels/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl",
   "./wheels/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
   "./wheels/pillow-12.1.0-cp313-cp313-win_amd64.whl",
]

Тепер встановлюючи пакунок він розархівує wheel в директорію свого розширення site-packages.

Виконання

Once the extension has been installed you can check the module is being loaded by importing it in the Python console and printing its location:

import PIL
print(PIL.__file__)

Збірки Платформ

Wheels може серйозно вплинути на розмір розширення. Щоб пом’якшити це, є можливим зробити збірки розширення zip файлів для кожної унікальної потрібної платформи.

Для цього вам треба використовувати опцію --split-platforms з команди build.

blender --command extension build --split-platforms

Приклад

Окремий відбиток маніфест файлу:

id = "my_addon_with_wheels"
version = "1.0.0"

platforms = ["windows-x64", "macos-x64"]
wheels = [
   "./wheels/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl",
   "./wheels/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
   "./wheels/pillow-12.1.0-cp313-cp313-win_amd64.whl",
]

Згенеровані файли з --split-platforms:

  • my_addon_with_wheels-1.0.0-windows_x64.zip

  • my_addon_with_wheels-1.0.0-macos_x64.zip

Примітка

Навіть якщо в наявності тільки Linux wheel, Linux zip файл не буде згенерований. Це трапляється тому, що поле platforms має тільки Mac та Windows.