AstroBox API Level 4 的 Python 插件模板。用 componentize-py 把 Python 代码编译成 WebAssembly Component。
Level 4 的 WIT 接口全部是 async func,componentize-py 0.25 起完整支持组件模型的
async(WASIp3),宿主接口在 Python 侧就是普通的 await:
arch = await host_os.arch()JavaScript 暂不可用:ComponentizeJS 尚未实现
async func,遇到就会not yet implemented。详见文档里的语言选择章节。
python3 -m venv .venv
. .venv/bin/activate
pip install componentize-py==0.25.1再把 WIT 拉下来(作为 submodule):
git submodule update --init --recursivepython scripts/build_dist.py # 构建到 dist/
python scripts/build_dist.py --package # 顺便打成 .abp.
├── manifest.json # 插件清单(api_level 必须是 4)
├── scripts/ # 构建脚本
├── src/app.py # 插件入口(你主要改这里)
└── wit/ # (submodule) WIT 接口定义
- 类名必须叫
Lifecycle/Event:componentize-py 按 WIT 里的导出接口名在 入口模块里找实现类,名字对不上就会报「Can't instantiate abstract class」。 - 产物体积约 20 MB(内嵌 CPython),首次加载时宿主会预编译并缓存,之后启动很快。