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

如何在Yocto配方中用pip安装无setup.py的pyadi-iio包?

解决Yocto中用pip安装pyadi-iio 0.0.15的缓存权限问题

核心问题原因

pyadi-iio 0.0.15弃用了setup.py,必须通过pip install .安装;而Yocto构建环境中,pip默认会尝试访问用户目录下的~/.cache/pip,但构建沙箱中的用户通常没有该目录的读写权限,导致报错。

配方修改步骤

1. 替换继承模块

移除原配方中的inherit setuptools3,改为继承Python3 pip相关模块:

inherit python3base python3pip

2. 自定义do_install函数

覆盖默认安装逻辑,用pip直接安装源码,同时通过以下两种方式解决缓存权限问题:

方案一:完全禁用缓存(推荐)

直接跳过pip缓存,彻底避免权限问题:

do_install() {
    pip3 install . \
        --no-deps \
        --prefix=${D}${prefix} \
        --no-cache-dir
}

方案二:指定临时缓存目录

如果需要缓存依赖以加快重复构建速度,可将缓存目录设置到Yocto构建工作目录下:

do_install() {
    mkdir -p ${WORKDIR}/pip_cache
    pip3 install . \
        --no-deps \
        --prefix=${D}${prefix} \
        --cache-dir=${WORKDIR}/pip_cache
}

3. 调整依赖项

确保配方的DEPENDS中包含pip工具:

DEPENDS = "python3-pip"

4. 确认源码源

确保SRC_URI指向pyadi-iio 0.0.15的源码包,例如:

SRC_URI = "https://files.pythonhosted.org/packages/source/p/pyadi-iio/pyadi-iio-0.0.15.tar.gz"
SRC_URI[sha256sum] = "填入对应版本的SHA256校验值"

关键参数说明

  • --no-deps:禁止pip自动安装依赖,确保所有依赖由Yocto的其他配方管理,符合构建规范
  • --prefix=${D}${prefix}:指定安装路径到Yocto的临时根文件系统目录,确保后续打包正确
  • --no-cache-dir:完全禁用pip缓存,避免任何与缓存目录相关的权限问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:17:02