将 python3 包添加到 Buildroot

Posted

技术标签:

【中文标题】将 python3 包添加到 Buildroot【英文标题】:Adding python3 packages to Buildroot 【发布时间】:2018-07-29 18:20:39 【问题描述】:

Buildroot 是一种可用于为嵌入式系统板构建 Linux 映像的工具。

Buildroot 带有一组预定义的 Python 包,我可以从它的菜单中选择。

此外,Buildroot 添加了一个不错的 Python 脚本,该脚本可以导入属于 PyPI 存储库的任何包,称为“scanpypi”。

不过,该脚本似乎只适用于 Python2。尝试导入较新的包时,出现错误,例如:

./support/scripts/scanpypi websockets -o package
buildroot package name for websockets: python-websockets
Package: python-websockets
Fetching package websockets
Downloading package websockets from https://pypi.python.org/packages/b6/12/6194aac840c65253e45a38912e318f9ac548f9ba86d75bdb8fe66841b335/websockets-4.0.1.tar.gz...
Traceback (most recent call last):
  File "./support/scripts/scanpypi", line 653, in <module>
    main()
  File "./support/scripts/scanpypi", line 604, in main
    package.load_setup()
  File "./support/scripts/scanpypi", line 250, in load_setup
    setup = imp.load_module('setup', s_file, s_path, s_desc)
  File "/tmp/scanpypi-qbY6eQ/python-websockets/websockets-4.0.1/setup.py", line 11, in <module>
TypeError: 'encoding' is an invalid keyword argument for this function

这个关键字无效。

还有:

./support/scripts/scanpypi websocket-server -o package
buildroot package name for websocket-server: python-websocket-server
Package: python-websocket-server
Fetching package websocket-server
Downloading package websocket-server from https://pypi.python.org/packages/74/64/e86581ee7775a2e08aca530b41e1a1e3ee6b320233b1eff301dcb86d1636/websocket_server-0.4.tar.gz...
Traceback (most recent call last):
  File "./support/scripts/scanpypi", line 653, in <module>
    main()
  File "./support/scripts/scanpypi", line 604, in main
    package.load_setup()
  File "./support/scripts/scanpypi", line 247, in load_setup
    os.chdir(self.tmp_extract)
OSError: [Errno 2] No such file or directory: '/tmp/scanpypi-YXROmL/python-websocket-server/websocket-server-0.4'

这个失败,因为包名包含下划线 (_) 而不是破折号 (-)。

【问题讨论】:

【参考方案1】:

我为 scanpypi 创建了一个 Python3 移植。

见https://github.com/ishahak/buildroot_scanpypi3

编辑

应@yegorich 的要求,我很高兴地通知您,现在scanpypi 可以同时用于Python 2/3!

我的链接版本仍可用于直接从 GitHub 安装较新版本。

【讨论】:

我也将 scanpypi 转换为 Py3(参见 patch),但最终计划是让 scanpypi 在 Py2 和 Py3 环境中都可执行。欢迎使用补丁! 干得好!我看过你的作品,但不想改变我原来的python2脚本,也不知道你的脚本成熟度。 顺便说一句,我注意到将包显示在 ./package 下不足以在 Buildroot 菜单中看到它。我不得不在 package/Config.in 中手动添加一行。我错过了什么吗? 你没有错过任何东西。现在你必须手动将包添加到package/Config.in 您能否测试一下patch 并将您的结果报告给BR 的邮件列表?谢谢。

以上是关于将 python3 包添加到 Buildroot的主要内容,如果未能解决你的问题,请参考以下文章

如何将 python3 内核添加到 jupyter (IPython)

如何将ethiopic字体添加到python3?

Visual Studio2017 Python添加包

如何将自定义 CA Root 证书添加到 Windows 中 pip 使用的 CA Store?

同时装了Python3和Python2,怎么用pip?

缺少导入 cv2 - python3.7