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

Petalinux/Yocto构建自定义Python模块至site-packages遇打包错误求助

解决Petalinux中自定义Python模块安装到site-packages的打包问题

问题背景

需将自定义Python模块构建到Xilinx Petalinux,安装至目标板的Python site-packages目录,执行petalinux-build时触发文件未被打包的QA错误。

目录结构(位于project-spec/meta-user/recipes-apps下)

├── foo-python
    ├── files
    │   └── foo-python.py
    └── foo-python.bb

原配方代码(foo-python.bb)

#
# This file is the foo-python recipe.
#

SUMMARY = "Simple foo-python application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://foo-python.py"

RDEPENDS:${PN} = "python3-core"

S = "${WORKDIR}"

do_install() {
       install -d ${D}${PYTHON_SITEPACKAGES_DIR}/${PN}
       install -m 0644 foo-python.py ${D}${PYTHON_SITEPACKAGES_DIR}/${PN}/
}

FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/${PN}/*"

错误信息

NOTE: Executing Tasks ERROR: foo-python-1.0-r0 do_package: QA Issue: foo-python: Files/directories were installed but not shipped in any
package:

/foo-python

/foo-python/foo-python.py

Please set FILES such that these items are packaged. Alternatively if
they are unneeded, avoid installing them or delete them within do_install.
foo-python: 2 installed and not shipped files. [installed-vs-shipped]
ERROR: foo-python-1.0-r0 do_package: Fatal QA errors found, failing
task.

解决步骤

方案1:修正FILES变量包含目录本身

错误原因是原配方仅包含了子目录下的文件,但未包含子目录${PYTHON_SITEPACKAGES_DIR}/${PN},Bitbake的QA检查要求所有安装的目录和文件都被纳入打包范围。修改FILES_${PN}:

FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/${PN} ${PYTHON_SITEPACKAGES_DIR}/${PN}/*"

或拆分两行:

FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/${PN}"
FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/${PN}/*"

方案2:简化安装(单个模块文件无需子目录)

如果自定义模块是单个.py文件,无需单独创建子目录,直接安装到site-packages根目录更简洁,也能避免目录未被打包的问题:

  1. 修改do_install函数:
    do_install() {
        install -d ${D}${PYTHON_SITEPACKAGES_DIR}
        install -m 0644 foo-python.py ${D}${PYTHON_SITEPACKAGES_DIR}/
    }
    
  2. 调整FILES_${PN}:
    FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/foo-python.py"
    

验证变量正确性

可通过以下命令确认${PYTHON_SITEPACKAGES_DIR}的实际路径,确保指向目标板的Python site-packages目录:

bitbake -e foo-python | grep PYTHON_SITEPACKAGES_DIR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:05:13