首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建Yocto食谱时,python3中没有名为“datetime”的模块,但python2.7中存在日期时间。

在创建Yocto食谱时,python3中没有名为“datetime”的模块,但python2.7中存在日期时间。
EN

Stack Overflow用户
提问于 2018-09-26 14:00:31
回答 2查看 2.2K关注 0票数 1

主机

Debian 9.4服务器

Yocto支部

krogothBitBake Build Tool Core version 1.30.0

工作流工具

devtool

要求

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

我想为以下几个方面制作食谱:

  1. pynmea2 v1.7.1
  2. 进水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专家

pynmea2和进水-python

形象创造

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

然后烧掉图像作为硬件。

在板上,我运行python3 shell来查看是否可以导入这些包。下面是shell的输出:

pynmea2

代码语言:javascript
复制
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

代码语言:javascript
复制
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 片段

代码语言:javascript
复制
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

代码语言:javascript
复制
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层中吗?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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的片段

代码语言:javascript
复制
IMAGE_INSTALL_append = " python3-modules influxdb-python pynmea2 pyserial"

这是完美的。

附注:

我目前还不确定是否应该在${PYTHON_PN}-modules中添加influxdb-pythonpynmea2的菜谱。

更新

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

缺点

作为一个例子,我理解添加python3-modules会增加您的图像占用,因为它需要在rootfs中添加很多模块。但是这些模块对于运行许多类型的应用程序来说似乎很重要,所以它有一个好处。

票数 0
EN

Stack Overflow用户

发布于 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"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52519565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档