【问题标题】:Add a pypi python package to buildroot将pypi python包添加到buildroot
【发布时间】:2018-01-12 15:54:35
【问题描述】:

我正在尝试将 python3-functionfs 模块集成到 buildroot 中。 我可以使用make menuconfig 选择它,但是当我运行make 时,甚至没有下载包。

该软件包可在此处获得:functionfs-0.3 pypi page
下载地址在这里:functionfs-0.3 download link
这里还有 github 仓库:functionfs git repository 我使用的是 Buildroot 2017.02 版本。

这是我的 Config.in 文件:

config BR2_PACKAGE_PYTHON3_FUNCTIONFS
    bool "python3-functionfs"
    depends on BR2_PACKAGE_PYTHON3
    help
        Pythonic API for linux’s functionfs.
        functionfs is part of the usb gadget subsystem. Together with usb_gadget’s configfs integration, allows userland to declare and implement an USB device.

    https://pypi.python.org/pypi/functionfs

这是我的 .mk 文件:

################################################################################
#
# python3-functionfs
#
################################################################################

PYTHON_FUNCTIONFS_VERSION = 0.3
PYTHON_FUNCTIONFS_SOURCE = functionfs-$(PYTHON_FUNCTIONFS_VERSION).tar.gz
PYTHON_FUNCTIONFS_SITE = https://pypi.python.org/packages/e3/2d/56e0d9ffe0da7c116a6724ee538375689dd59e34dbe1676edf6b66b52be4
PYTHON_FUNCTIONFS_LICENSE = GPLv3+
PYTHON_FUNCTIONFS_LICENSE_FILE = COPYING
PYTHON_FUNCTIONFS_SETUP_TYPE = setuptools

$(eval $(python-package))

该文档还在 17.8.3 中提及。从 PyPI 存储库生成 python 包

如果您要为其创建 Buildroot 的 Python 包 包在 PyPI 上可用,您可能需要使用 scanpypi 工具 位于 utils/ 以自动化该过程。

您可以在此处找到现有 PyPI 包的列表。

scanpypi 需要安装 Python 的 setuptools 包 主持人。

当你在你的 buildroot 目录的根目录下时:

utils/scanpypi foo bar -o package

这将在包中生成包python-foo和python-bar 文件夹(如果它们存在于 https://pypi.python.org 上)。

找到外部 python 模块菜单并将您的包插入其中。 请记住,菜单中的项目应按字母顺序排列 顺序。

请记住,您很可能需要手动检查 为任何错误打包,因为有些事情是无法猜测的 生成器(例如,依赖于任何 python 核心模块 例如 BR2_PACKAGE_PYTHON_ZLIB)。另外,请注意, 许可证和许可证文件是猜测的,必须检查。你也 需要手动将包添加到 package/Config.in 文件中。

如果您的 Buildroot 包不在官方的 Buildroot 树中,而是在 一个 br2-external 树,使用 -o 标志如下:

utils/scanpypi foo bar -o other_package_dir

这将在 other_package_directory 而不是包。

选项 -h 将列出可用选项:

utils/scanpypi -h

但是我在 buildroot 主目录中没有 util/ 文件夹。 该脚本位于support/scripts/scanpypi,但是当我运行它时出现以下错误:

$ support/scripts/scanpypi functionfs -o package
Traceback (most recent call last):
  File "support/scripts/scanpypi", line 47, in <module>
    import setuptools
  File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 11, in <module>
    from setuptools.extern.six.moves import filterfalse, map
  File "/usr/local/lib/python2.7/dist-packages/setuptools/extern/__init__.py", line 1, in <module>
    from pkg_resources.extern import VendorImporter
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 40, in <module>
    from pkgutil import get_importer
ImportError: cannot import name get_importer

这可以通过重命名support/scripts/pkgutil.pysupport/scripts/pkgutil.pyc 来解决。

但是,当我尝试自己创建包但无法下载时,我想了解发生了什么。


有人知道为什么运行make时没有下载functionfs-0.3.tar.gz吗?

【问题讨论】:

    标签: python linux module package buildroot


    【解决方案1】:

    您的包未下载,因为您的包名称与 .mk 文件中的变量名称不匹配。基本上,您必须匹配三件事:

    • Config.in 中的BR2_PACKAGE_&lt;FOO&gt; 选项
    • 文件名和目录名必须是package/&lt;foo&gt;/&lt;foo&gt;.mk
    • .mk 文件中的变量必须命名为&lt;FOO&gt;_SOMETHING

    您没有说 .mk 文件的名称是什么,但至少您的选项命名为 BR2_PACKAGE_PYTHON3_FUNCTIONFS 而 make 变量命名为 PYTHON_FUNCTIONFS_SOMETHING

    这就解释了为什么它没有被下载。

    那么,关于scanpypi 脚本,在最新版本的Buildroot 中,它肯定在utils/ 目录中。几个版本前它曾经在support/scripts 中。因此,基本上您正在查看在线的 Buildroot 文档(并且与最新版本匹配),但您使用的是较旧的 Buildroot 版本。您可以通过运行 make manual-html 来构建与您的 Buildroot 版本匹配的 Buildroot 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 2020-05-03
      相关资源
      最近更新 更多