创建无法在Python应用程序中使用的配方
由于influxdb-python
和pynmea2
不作为标准Python配方提供,因此我开始使用devtool
为它们创建配方。
步骤
使用devtool
添加influxdb-python
devtool add influxdb-python https://github.com/influxdata/influxdb-python/archive/v5.2.0.tar.gz
使用devtool
添加pynmea2
devtool add pynmea2 https://github.com/Knio/pynmea2/archive/1.7.1.tar.gz
上述步骤会在您的$BUILD_DIR
中创建一个名为workspace
的文件夹,并为存储库创建自动生成的配方。
编辑配方
devtool edit-recipe influxdb-python
根据需要添加或检查配方中的DEPEND_${PN}
和RDEPENDS_${PN}
。 我将所有influxdb-python
的requirements.txt
添加到RDEPENDS_${PN}
中,即:
RDEPEND_${PN} += "${PYTHON_PN}-modules ${PYTHON_PN}-requests ${PYTHON_PN}-dateutil ${PYTHON_PN}-pytz ${PYTHON_PN}-six"
注意:我未添加pandas
或numpy
,因为它们与我的应用程序无关。
我还添加了DEPENDS_${PN} = "${PYTHON_PN}-modules
。
注意:对于pynmea2
执行相同操作,但由于它没有requirements.txt
,我添加了RDEPENDS_${PN} = "${PYTHON_PN}-modules"
,以便目标上有所有重要的东西。
配方结构
GitHub配方Gist
我遵循了meta-python
文件夹的结构,其中每个配方都包含:
recipe.inc
recipe_version_number.bb
在influxdb_python.inc
中,将从devtool
生成的所有内容都保留。
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=046523829184aac3703a4c60c0ae2104"
HOMEPAGE = "https://github.com/influxdb/influxdb-python"
SUMMARY = "InfluxDB client"
SRC_URI = "https://github.com/influxdata/influxdb-python/archive/v${PV}.tar.gz"
SRC_URI[md5sum] = "105d88695151e241523b31dd1375096e"
SRC_URI[sha256sum] = "620de85bcca5207b06ec1565884b6d10b4be01d579a78e08b1e922f453fdac05"
DEPENDS_${PN} = "${PYTHON_PN}-modules"
RDEPENDS_${PN} = "${PYTHON_PN}-modules ${PYTHON_PN}-requests ${PYTHON_PN}-dateutil ${PYTHON_PN}-pytz ${PYTHON_PN}-six"
我在 influxdb_python_5.2.0.bb
文件中添加了如下代码:
inherit setuptools3 pypi
require influxdb-python.inc
注意:我添加了setuptools3
,因为我想要我的应用程序在python3.5
上运行。对于python2.7,请使用setuptools
。
同样地,我也对pynmea2.inc
进行了相同的操作:
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bb5e173bc54080cb25079199959ba6b6"
HOMEPAGE = "https://github.com/Knio/pynmea2"
SUMMARY = "Python library for the NMEA 0183 protcol"
SRC_URI = "https://github.com/Knio/pynmea2/archive/${PV}.tar.gz"
SRC_URI[md5sum] = "a90baf61f4e676bef76099e4bd7c0581"
SRC_URI[sha256sum] = "8f8f68623bd2d5dab7f04a9c31813a3f4aa15467db0373cbce6b9b0ae44ca48e"
DEPENDS_${PN} = "${PYTHON_PN}-modules"
RDEPENDS_${PN} = "${PYTHON_PN}-modules"
针对pynmea2_1.7.1.bb
:
inherit setuptools3 pypi
require pynmea2.inc
烘焙配方
您可以使用bitbake -k influxdb-python
和bitbake -k pynmea2
或者devtool build influxdb-python
和devtool build pynmea2
来测试它们。
如果没有错误,您就可以将其部署到目标设备上:
devtool deploy-target influxdb-python user@machineIP:dest_folder
检查
您可以通过启动Python shell进行检查。
# python3
>> import influxdb-python
>> import pyserial
如果导入没有缺少模块的错误,则导入成功!
最终步骤
注意:如果您使用的是krogoth
或更低版本,那么您必须手动将您的配方移动到您的元层中
- 现在在您的
conf/local.conf
中包含这些配方IMAGE_INSTALL_append = " influxdb-python pynmea2"
和bitbake -k your-image-name
定制应用程序
尚未测试。
但我认为我会像在YoctoCookBook存储库中提到的那样使用我的应用程序,并搭配我的meta
层。