You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建python_example报错:找不到pybind11模块求助

解决Yocto编译pybind11示例时的ModuleNotFoundError问题

核心原因

你将python3-pybind11添加到IMAGE_INSTALL中,这仅配置了目标设备的运行时依赖,但Yocto编译阶段(build过程)需要的是构建环境的依赖——编译主机环境中未找到pybind11模块,才会触发该错误。

具体修复步骤

1. 补充Recipe的构建依赖

打开devtool生成的recipe文件(通常位于workspace/recipes/<你的包名>/目录下),添加构建阶段的依赖声明:

  • 在DEPENDS变量中加入python3-pybind11-native,确保编译时构建主机能找到pybind11模块
  • 同时在RDEPENDS_${PN}中添加python3-pybind11,明确声明目标设备的运行时依赖(避免后续运行时缺失)

示例修改代码:

DEPENDS += "python3-pybind11-native"
RDEPENDS_${PN} += "python3-pybind11"

2. 确保Recipe继承正确的Python构建类

检查recipe开头是否继承了python3native和setuptools3类,这两个类能保证编译时使用构建主机的Python环境处理pybind11依赖。如果没有,添加以下内容:

inherit python3native setuptools3

3. 验证pyproject.toml的版本匹配

确认你修改后的pyproject.toml版本要求与Yocto提供的2.4.3版本完全兼容,建议明确版本范围:

[build-system]
requires = ["pybind11>=2.4.3,<2.5"]
build-backend = "pybind11.setup_helpers"

4. 重新执行构建

先清理可能存在的缓存,再重新构建:

devtool clean <你的包名>
devtool build <你的包名>

额外注意事项

  • python3-pybind11-native是构建主机上的pybind11包,负责编译阶段的模块查找;python3-pybind11是目标设备上的运行时库,二者作用不同
  • Yocto的构建环境与目标环境完全隔离,必须区分构建依赖(DEPENDS)和运行时依赖(RDEPENDS_${PN})

内容的提问来源于stack exchange,提问作者Youngmin Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:17:36