我很难找到一个在 Yocto(更具体地说是 Xilinx 的 Petalinux)中构建自定义 python 模块的示例,该模块将安装到 python site-packages 目录中,以便我可以使用我的目标编写 Python 脚本模块。
这是我到目前为止所拥有的:
(在项目规范/元用户/食谱应用程序中)
├── foo-python ├── files │ └── foo-python.py └── 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}/*"
当我 bitbake 我的食谱(Petalinux-build)时,我收到以下错误:
注意:执行任务错误:foo-python-1.0-r0 do_package:QA 问题:foo-python:文件/目录已安装,但未在任何版本中提供 包装:
/foo-python
/foo-python/foo-python.py
请设置文件以便打包这些项目。或者如果 它们是不需要的,避免安装它们或在 do_install 中删除它们。 foo-python:2 个已安装但未发布的文件。 [已安装与已发货] 错误:foo-python-1.0-r0 do_package:发现致命 QA 错误,失败 任务。
您可以将
inherit setuptools3
添加到配方中并创建 setup.py 来进行安装。一个例子可以是:
"""A setuptools based setup module.
See:
https://packaging.python.org/guides/distributing-packages-using-setuptools/
https://github.com/pypa/sampleproject
"""
# Always prefer setuptools over distutils
from setuptools import setup, find_packages
setup(
name="foo-python",
# Package info
packages=["foo-python"] + ["foo-python." + pkg for pkg in find_packages("foo-python")],
package_data={"foo-python": ["*.py"]},
python_requires=">=3.7, <4",
entry_points={
"console_scripts": [
"foo = foo-python.main:main",
],
},
)