为Yocto添加python3-pip自定义配方编译失败求助
解决Yocto构建python3-pip时找不到setup.py的问题
核心问题
你使用的pip main分支已经移除了setup.py,改用现代的pyproject.toml构建系统,因此编译时会提示找不到该文件。同时配方中存在不符合Yocto规范的写法,导致问题持续存在。
修复步骤及修正后的配方
1. 改用pip稳定版本的源码
放弃main分支,选择包含setup.py的稳定release版本,推荐直接使用官方发布的tarball(避免git同步的潜在问题)。
2. 修正Yocto配方规范
- 移除绝对路径的
inherit写法,Yocto会自动从已配置的meta层查找bbclass文件 - 删除自定义的
do_compile和do_install,setuptools3.bbclass已经封装了标准的构建安装流程 - 更新
LIC_FILES_CHKSUM以匹配所选版本的校验值 - 调整版本号为实际对应版本
修正后的配方示例:
DESCRIPTION = "Python package installer for Python 3" HOMEPAGE = "https://pypi.org/project/pip/" LICENSE = "MIT" # 对应pip 23.3.1版本的LICENSE.txt md5值 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=63ec52baf95163b597008bb46db68030" # 使用官方发布的tarball,稳定性更高 SRC_URI = "https://files.pythonhosted.org/packages/source/p/pip/pip-23.3.1.tar.gz" SRC_URI[sha256sum] = "a1813b4e59f5f4a018f79f29d719f1d977d94c42c7c0d9784e8919f0f7a39e76" S = "${WORKDIR}/pip-23.3.1" inherit setuptools3 DEPENDS = "python3-setuptools python3-wheel" FILES_${PN} = "${bindir}/pip3 ${PYTHON_SITEPACKAGES_DIR}/"
额外说明
- 如果坚持使用git源码,需指定包含setup.py的tag,例如:
SRC_URI = "git://github.com/pypa/pip.git;tag=23.3.1;protocol=https",对应的SRCREV为该tag的commit哈希值 - 构建前先清理旧工作目录:
bitbake -c clean python3-pip,再重新执行构建 - 对于NXP i.MX的Yocto项目,优先检查是否有现成meta层提供python3-pip(如meta-openembedded的meta-python层),无需自行编写配方
内容的提问来源于stack exchange,提问作者Coder101
相关产品推荐
相关产品推荐

