为 Yocto 添加 PyPi 包,无需 setup.py

问题描述 投票:0回答:1

我正在使用 Yocto Kirkstone 为我的 Linux 设备创建映像。我想添加尚未作为 bitbake 配方存在的 PyPi 包“tinydb”。我使用了一个工具来创建一个可以进行 Bitbake 的工作配方。然而,当我尝试将这个食谱包含到我的图像中时,我遇到了以下失败。所以我可以构建包但不能安装它。我怎样才能解决这个问题?谢谢。

Reading package lists...
Building dependency tree...
Reading state information...
Package python3-tinydb is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'python3-tinydb' has no installation candidate

但是我可以成功地做到这一点:

bitbake -c cleansstate python3-tinydb && bitbake python3-tinydb

Bitbake 食谱:

# The is automatic generated Code by "makePipRecipes.py"
# (build by Robin Sebastian (https://github.com/robseb) ([email protected]) Vers.: 1.2) 

SUMMARY = "Recipe to embedded the Python PiP Package tinydb"
HOMEPAGE ="https://pypi.org/project/tinydb"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=ee9d91e0565d932659cf275d126c7437"

PROVIDES = "python3-tinydb"

inherit pypi
PYPI_PACKAGE = "tinydb"
SRC_URI[md5sum] = "8738999976febfe7e8ea81c4b1910f9b"
SRC_URI[sha256sum] = "6dd686a9c5a75dfa9280088fd79a419aefe19cd7f4bd85eba203540ef856d564"

图像中的图像安装线:

# Add python packages
IMAGE_INSTALL += "python3-tinydb"

编辑:我相信问题可能是 Yocto 的工作目录中没有“包”。这可能是因为没有setup.py来安装tinydb包:

developer@docker-desktop:~/vendor-nxp-bsp/build-imx8plus/tmp/work/armv8a-poky-linux/python3-tinydb/4.8.0-r0$ ls package
developer@docker-desktop:~/vendor-nxp-bsp/build-imx8plus/tmp/work/armv8a-poky-linux/python3-tinydb/4.8.0-r0$ ls
configure.sstate          image            packages-split       pkgdata-sysroot  recipe-sysroot-native  temp
deploy-debs               license-destdir  pkgdata              pseudo           source-date-epoch      tinydb-4.8.0
deploy-source-date-epoch  package          pkgdata-pdata-input  recipe-sysroot   sysroot-destdir
developer@docker-desktop:~/vendor-nxp-bsp/build-imx8plus/tmp/work/armv8a-poky-linux/python3-tinydb/4.8.0-r0$ ls image/
developer@docker-desktop:~/vendor-nxp-bsp/build-imx8plus/tmp/work/armv8a-poky-linux/python3-tinydb/4.8.0-r0$ ls tinydb-4.8.0/
LICENSE  PKG-INFO  pyproject.toml  README.rst  tests  tinydb
linux yocto pypi bitbake
1个回答
0
投票

您可以获取whl,然后手动提取它。像这样的东西:

inherit python3-dir

SRC_URI = "https://files.pythonhosted.org/packages/1c/c4/9a1721139a6087ab3df4ba99ac82da5d88f92b1ea5027b0c411ce09b1d70/tinydb-4.8.0-py3-none-any.whl;downloadfilename=tinydb-4.8.0-py3-none-any.zip"
SRC_URI[md5sum] = "46ae8775b63486a4248d9607fa7af1ce"

do_unpack[depends] += "unzip-native:do_populate_sysroot"

DEPENDS = "python3"

do_install() {
    install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/tinydb
    install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/tinydb-${PV}.dist-info

    install -m 644 ${WORKDIR}/tinydb/* ${D}${libdir}/${PYTHON_DIR}/site-packages/tinydb/
    install -m 644 ${WORKDIR}/tinydb-${PV}.dist-info/* ${D}${libdir}/${PYTHON_DIR}/site-packages/tinydb-${PV}.dist-info/
}

FILES:${PN} += "\
    ${libdir}/${PYTHON_DIR}/site-packages/tinydb \
    ${libdir}/${PYTHON_DIR}/site-packages/tinydb-${PV}.dist-info \
"

称其为

python3-tinydb_4.8.bb
或类似的名称。

注意:还没有尝试实际的配方(例如,您需要添加许可证信息),可能会有一些拼写错误,但这是以相对轻松的方式安装此类软件包的主要思想。

© www.soinside.com 2019 - 2024. All rights reserved.