python - 为 Yocto 创建配方时,python3 中没有名为 'datetime' 的模块,但 python2.7 中存在日期时间

标签 python python-3.x embedded-linux yocto bitbake

主机

Debian 9.4 服务器

Yocto 分支

krogothBitBake 构建工具核心版本 1.30.0

工作流程工具

开发工具

要求

它们应该在硬件上作为 python3.5 包提供

我想创建食谱:

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

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

  1. devtool 添加 pynmea2 https://github.com/Knio/pynmea2/archive/v1.7.1.tar.gz
  2. devtool 添加 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 Gist 中提到了这些文件

GitHub 要点

Gists for pynmea2 and influxdb-python

图像创建

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

并刻录硬件镜像。

董事会

在板上,我运行 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 " 

编辑

我还在 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"

list 文件中已包含日期时间?如果有必要,我应该更改文件中的哪些内容? (我应该将其添加到元自定义层中吗?)

最佳答案

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

尝试显式引入 python-datetime:

IMAGE_INSTALL_append += "python3-datetime"

关于python - 为 Yocto 创建配方时,python3 中没有名为 'datetime' 的模块,但 python2.7 中存在日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52519565/

相关文章:

python - 用于 Matplotlib 交互的 IPython Notebook 小部件

Python、Selenium 和 Beautiful Soup for URL

python-3.x - 使用pygame时如何处理python中的时间

python - 为什么此代码不检查文本文件中单词的有效性?

linux - 交叉编译错误无法加载库 'libc.so.6'

c - 如何避免使用gcc在c中包装输入数据?

python - 将 HTML 表数据解析为 JSON 并保存到 Python 2.7 中的文本文件

python - 如何在python中合并多个coco json文件

python - 如何为多个Python版本和平台构建编译模块

c++ - 嵌入式系统的开源视频编码器