如何为Python wheel添加Windows、Linux独立的平台特定动态库
PyPI包准入说明
PyPI允许上传包含预编译二进制文件的平台专属wheel,只要包符合wheel命名规范即可正常发布。需要额外注意Blender采用GPLv2+许可证,你打包时需在包内附带对应许可证文本,遵守许可证使用要求。
多平台wheel生成方案
不需要在单设备上跨架构构建所有版本,直接在对应目标平台上分别执行构建操作即可:
- Windows环境生成Windows专属wheel
- Linux环境生成Linux专属wheel
- 若需兼容更多Linux发行版,可使用官方manylinux容器执行构建
setup.py核心配置
将对应平台的预编译Blender二进制文件统一放在包目录下的blender_bin文件夹中,再按如下示例配置setup.py:
from setuptools import setup, find_packages setup( name="你的包名称", version="0.1.0", packages=find_packages(), # 声明要包含的Blender二进制文件,匹配所有子目录内容 package_data={ "你的包名称": ["blender_bin/*", "blender_bin/**/*"] }, # 关闭通用wheel生成,标记为平台专属 options={ "bdist_wheel": { "universal": False, # Linux manylinux构建时可手动指定平台标识,常规构建自动识别即可 # "plat_name": "manylinux_2_28_x86_64" } }, # 其他依赖、作者、说明等配置按需补充 )
构建时直接执行python setup.py bdist_wheel命令,生成的wheel文件会自动携带对应平台标识(Windows为win_amd64、普通Linux构建为linux_x86_64)。
平台匹配规则
无需手动编写匹配逻辑,pip安装时会自动根据用户的操作系统、架构信息,匹配对应平台标识的wheel版本下载安装,你只需要将所有平台构建好的wheel全部上传到PyPI即可。
注意事项
- PyPI单个包文件大小限制为100MB,Blender二进制体积较大,打包前可对二进制执行裁剪、压缩操作,若仍超出限制可改为安装时动态拉取二进制文件。
- 内置二进制时需确保携带Blender所有依赖文件,Linux下可通过
ldd命令检查动态依赖,Windows下可通过dumpbin /dependents命令检查,避免用户运行时缺失依赖。
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

