为Yocto创建配方时,python3中没有名为“datetime”的模块,但python2.7中存在datetime

2024-03-29 10:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

主机

Debian 9.4服务器

Yocto分支

krogothBitBake Build Tool Core version 1.30.0

工作流工具

devtool

要求

它们应该是硬件上的python3.5包

我想为以下各项创建配方:

  1. pynmea2 v1.7.1
  2. influxdb-python v5.2.0

我在我的$BUILD_DIR中使用以下步骤:

  1. devtool add pynmea2 https://github.com/Knio/pynmea2/archive/v1.7.1.tar.gz
  2. devtool 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 Gists

Gists for pynmea2 and influxdb-python

形象塑造

对于本地测试,我将这些配方从workspace文件夹(由devtool自动创建)添加到local.conf下的`IMAGE_INSTALL_append=“infuxdb python pynmea2”

为硬件烧录图像。在

董事会

在板上,我运行python3shell,看看是否可以导入这些包。下面是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

^{pr2}$

对比度

如果我在板上运行python命令并尝试import datetime,那么该模块存在。在

有什么问题吗?为什么datetime不能作为python 3.5的模块使用?在

{

IMAGE_INSTALL_append = " python3 python3-dev python3-enum pynmea2 influxdb-python python3-pyserial " 

编辑

我还显式地在local.conf文件中添加了IMAGE_INSTALL_append = " python3-datetime"。但还是同样的错误。在

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层中?)在


Tags: 文件inimportdatetimelibusrlinesite
2条回答

解决方案

我看到了This particular blogpost的一个小片段,其中提到在INSTALL_IMAGE_append中使用python-modules。在

在看过问题中提到的python-3.5-manifest.inc文件之后,我发现{}将为我的应用程序提供运行所需的所有基本模块。在

试验

因此,在local.conf文件中,我添加了IMAGE_INSTALL_appends = " python3-modules",并在硬件上加载了映像。这件事做得很好。在

现在在python3shell中,我没有收到任何datetime模块错误。在

现在是local.conf的代码段

IMAGE_INSTALL_append = " python3-modules influxdb-python pynmea2 pyserial"

这个很好用。在

p、 s.

我现在不确定我是否应该在RDEPENDS_${PN}中添加${PYTHON_PN}-modules作为influxdb-python和{}的配方。在

更新

我更新了GitHub gists,它现在在RDEPENDS中添加了${PYTHON_PN}-modules,它在板上工作。在

退税

据我所知,添加python3-modules会增加映像占用空间,因为它需要在rootfs中添加很多模块。但这些模块似乎对运行多种类型的应用程序很重要,因此它也有好处。在

查看source/poky/meta/recipes-devtools/python/python-3.5-manifest.inc中的python-3.5-manifest.inc文件

尝试使用以下内容显式地拉入python datetime:

IMAGE_INSTALL_append += "python3-datetime"

相关问题 更多 >