主机
Debian 9.4服务器
Yocto支部
krogoth,BitBake Build Tool Core version 1.30.0
工作流工具
devtool
要求
它们应该是硬件上的python3.5包
我想为以下几个方面制作食谱:
我在我的$BUILD_DIR中使用以下步骤
devtool add pynmea2 https://github.com/Knio/pynmea2/archive/v1.7.1.tar.gzdevtool add influxdb-python https://github.com/influxdata/influxdb-python/archive/v5.2.0.tar.gz我从工具那里得到菜谱。对于所有运行时依赖项,我将RDEPENDS_${PN} += "python-re"更改为RDEPENDS_${PN} += "${PYTHON_PN}-re",并将此信息转换为各自的.inc文件。这些文件在下面的Github中被提到
GitHub专家
形象创造
对于本地测试,我从workspace文件夹(由devtool自动创建)将这些菜谱添加到`IMAGE_INSTALL_append =“influxdb python pynmea2”下的local.conf中。
然后烧掉图像作为硬件。
板
在板上,我运行python3 shell来查看是否可以导入这些包。下面是shell的输出:
pynmea2
Python 3.5.1 (default, Sep 25 2018, 19:27:54)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pynmea2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/site-packages/pynmea2/__init__.py", line 13, in <module>
from .types import *
File "/usr/lib/python3.5/site-packages/pynmea2/types/__init__.py", line 3, in <module>
from .talker import *
File "/usr/lib/python3.5/site-packages/pynmea2/types/talker.py", line 3, in <module>
from ..nmea_utils import *
File "/usr/lib/python3.5/site-packages/pynmea2/nmea_utils.py", line 2, in <module>
import datetime
ImportError: No module named 'datetime'influxdb-python
Python 3.5.1 (default, Sep 25 2018, 19:27:54)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import influxdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/site-packages/influxdb/__init__.py", line 9, in <module>
from .client import InfluxDBClient
File "/usr/lib/python3.5/site-packages/influxdb/client.py", line 14, in <module>
import requests
File "/usr/lib/python3.5/site-packages/requests/__init__.py", line 58, in <module>
from . import utils
File "/usr/lib/python3.5/site-packages/requests/utils.py", line 12, in <module>
import cgi
File "/usr/lib/python3.5/cgi.py", line 30, in <module>
from email.parser import FeedParser
File "/usr/lib/python3.5/email/parser.py", line 12, in <module>
from email.feedparser import FeedParser, BytesFeedParser
File "/usr/lib/python3.5/email/feedparser.py", line 27, in <module>
from email import message
File "/usr/lib/python3.5/email/message.py", line 16, in <module>
from email import utils
File "/usr/lib/python3.5/email/utils.py", line 30, in <module>
import datetime
ImportError: No module named 'datetime'对比
如果我在板上运行python命令并尝试使用import datetime,该模块就存在。
有什么问题吗?为什么datetime不能作为python 3.5的一个模块
local.conf 片段
IMAGE_INSTALL_append = " python3 python3-dev python3-enum pynmea2 influxdb-python python3-pyserial " 编辑
我还显式地在IMAGE_INSTALL_append = " python3-datetime"文件中添加了local.conf。但还是同样的错误。
python-3.5-manifest.inc
SUMMARY_${PN}-modules="All Python modules"
RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importl
ib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlit
e3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc "
ALLOW_EMPTY_${PN}-modules = "1"清单文件中已经有datetime了吗?如果有必要,我应该在文件中修改什么?(我应该将它添加到meta-custom层中吗?)
发布于 2018-09-27 14:08:26
解决方案
我看到了这个特别的博客的一个小片段,其中提到在INSTALL_IMAGE_append中使用python-modules。
在看了问题中提到的python-3.5-manifest.inc文件之后,我看到-modules将为我的应用程序提供运行所需的所有基本模块。
测试
因此,在local.conf文件中,我添加了IMAGE_INSTALL_appends = " python3-modules"并将映像加载到硬件上。事实上,这是非常有效的。
现在,在python3 shell中,我没有收到任何datetime模块错误。
现在是local.conf的片段
IMAGE_INSTALL_append = " python3-modules influxdb-python pynmea2 pyserial"这是完美的。
附注:
我目前还不确定是否应该在${PYTHON_PN}-modules中添加influxdb-python和pynmea2的菜谱。
更新
我更新了GitHub专家,它现在在RDEPENDS中添加了${PYTHON_PN}-modules,它在板上工作。
缺点
作为一个例子,我理解添加python3-modules会增加您的图像占用,因为它需要在rootfs中添加很多模块。但是这些模块对于运行许多类型的应用程序来说似乎很重要,所以它有一个好处。
发布于 2018-09-27 01:28:36
查看一下python-3.5-manifest.inc文件在source/poky/meta/recipes-devtools/python/python-3.5-manifest.inc中
尝试显式地在python-datetime中使用:
IMAGE_INSTALL_append += "python3-datetime"
https://stackoverflow.com/questions/52519565
复制相似问题