yocto 如何添加python module
最近在使用阿里云的图像识别SDK,在ubuntu主机上使用pip install alibabacloud_imagerecog20190930 安装modules以后就可以运行demo程序了,于是打算将SDK移植到嵌入式板子上面,然后在板子上跑一下demo。但是发现好像不是想象的这么简单,在板子上执行
pip install alibabacloud_imagerecog20190930 -i https://pypi.tuna.tsinghua.edu.cn/simple
执行报错:
需要升级pip版本:
pip3 install -U pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
继续尝试pip install
pip3 install alibabacloud_imagerecog20190930 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
还是报错,可以看到这次其实已经下载完SDK了,但是发现在build 依赖的时候提示找不到工具链,因为嵌入式开发板上并没有工具链,所以最后无法通过pip install来安装了。
所以下面记录一下yocto集成python modules的详细过程,供大家参考
- 主机PC上安装pipoe
pip3 install pipoe
- 通过pipoe来自动查找modules的依赖并生成bb file
pipoe -p alibabacloud_imagerecog20190930 --python python3
经过这一步pipoe会自动生成如下文件:
其中所有.bb文件均是依赖的modules, python3_versions.inc是指定每个modules当前的版本号
3. 添加生成的文件到yocto编译环境
这里面主要有三步:
- 将所有的.bb文件存放到recipes-devtool/python/路径下
- 将python3_versions.inc存放到发行版的配置文件夹路径并在发行版的配置中添加
如下图所示,我在openstlinux-eglfs.conf里面使用 require include/python3-versions.inc
- 将添加的modules放到任意一个packagegroup里面
如下图所示我把刚才那些所有的依赖modules都添加到packagegroup-framework-tools.bb这个packagegroup里面了,请确保你添加的packagegroup一定会被编译进根文件系统里面![在这里插入图片描述](https://img-blog.csdnimg.cn/d45e449d1d2848c1879e73acdbb3697f.png
- 编译更新根文件系统
最后只需要重新编译根文件系统即可,我们看下重新编译的镜像里面包含了我们添加的这些modules,实际存放的路径是在/usr/lib/python3.8/site-packages下面
DONE