关于Python编程语言的一大优点是PyPI (Python软件包索引),该库托管了第三方库,任何人都可以使用它安装并获得对现有功能的访问权限,而无需从头开始。 这些库是社区成员编写的便捷实用程序,在Python标准库中找不到。 但是它们的工作方式几乎相同:您将它们导入代码中,并可以访问未编写的函数和类。
跨平台问题
尝试分发库以供其他人使用跨平台时出现问题。 标准是创建称为Python wheels的内置发行版 。 虽然纯Python库自动跨平台兼容,但必须针对每种操作系统,Python版本和系统架构分别构建以C / C ++实现的库。 因此,如果一个库想要同时支持Windows,MacOS和Linux(适用于32位和64位计算机以及 Python 2.7、3.4、3.5和3.6),则将需要24个不同的版本! 一些软件包可以执行此操作,但其他软件包则需要用户根据源代码构建软件包,这可能需要很长时间,并且通常很复杂。
树莓派和手臂
Raspberry Pi运行Linux时,它与常规PC的体系结构不同,而是Arm,而不是Intel。 这意味着Linux轮子无法正常工作,Raspberry Pi用户必须从源代码构建,直到piwheels项目在去年实现为止。 Piwheels是一个开源项目,旨在为PyPI上的每个软件包构建Raspberry Pi平台轮。
软件包在Raspberry Pi 3硬件上本地编译,并托管在英国的Mythic Beasts提供的数据中心中,该中心将Cloud Pis作为其托管服务的一部分。 piwheels网站以兼容点子的 Web服务器配置托管这些轮子,因此Raspberry Pi用户可以轻松使用它们。 Raspbian Stretch甚至预先配置为使用piwheels.org作为PyPI的附加索引。
wheel堆
piwheels项目(几乎)完全在Raspberry Pi硬件上运行:
- 主
- Raspberry Pi Web服务器托管wheel文件,并将作业分发给生成器Pis。
- 数据库服务器
- 所有软件包信息都存储在Postgres数据库中 。
- 主日志构建尝试和下载。
- 建筑商
- 为Builder Pis提供了要尝试的生成作业,并且它们与数据库进行通信。
- PyPI上的待办事项包积压工作已使用了大约20个Raspberry Pi。
- 需要较少数量的Pi来跟上新版本。 目前,有3个Raspbian Jessie(Python 3.4)和2个Raspbian Stretch(Python 3.5)。
该数据库服务器最初是Raspberry Pi,但是当数据库太大时又移至另一台服务器。
节省时间
每月从piwheels.org下载大约500,000个软件包。
每次使用piwheel构建软件包或由用户下载软件包时,其状态信息(包括构建持续时间)都会记录在数据库中。 因此,可以计算使用预编译的软件包节省了多少时间。
在服务运行的10个月中,已节省了25年以上的构建时间。
非常适合项目
需要Python库的Raspberry Pi项目教程通常包含诸如“此步骤需要几个小时”之类的警告,但由于piwheel的原因,这不再是正确的。 Piwheels使制造商和开发人员可以轻松地直接投入他们的项目,而不会因等待安装软件而陷入困境。 令人惊叹的库只需要点子即可安装 ; 无需等待编译。
Piwheels具有适用于NumPy,SciPy,OpenCV, Keras甚至Google的机器学习框架Tensorflow的轮子 。 这些库非常适合家庭项目 ,包括带有相机模块的图像和面部识别。 为了获得启发,请关注PyImageSearch上的Raspberry Pi类别(这是我最喜欢的Raspberry Pi博客之一 )。
在该项目的博客和Raspberry Pi博客上阅读有关piwheel的更多信息, 在GitHub上查看源代码 ,并访问piwheels网站 。 如果要为该项目做出贡献,请检查缺少的包标记,并查看是否可以成功构建其中之一。
翻译自: https://opensource.com/article/18/10/piwheels-python-raspberrypi