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根目录更简洁,也能避免目录未被打包的问题:
- 修改
do_install函数:do_install() { install -d ${D}${PYTHON_SITEPACKAGES_DIR} install -m 0644 foo-python.py ${D}${PYTHON_SITEPACKAGES_DIR}/ } - 调整
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
相关产品推荐
相关产品推荐

