TranslateProject/translated/tech/20200107 How piwheels will save Raspberry Pi users time in 2020.md
2020-01-11 15:45:33 +08:00

8.0 KiB
Raw Blame History

piwheels 是如何在2020年节省树莓派用户的时间的

通过为树莓派提供预编译的 Python 包piwheels 项目为用户节省了大量的时间和精力。rainbow colors on pinwheels in the sun

piwheels 自动为PiPi上的所有项目构建 Python wheels( 预编译的 Python包 ),即 Python 包索引,使用树莓派硬件确保其兼容性。这意味着,当树莓派用户想要使用 pip安装一个Python库时他们会得到一个现成的编译版本并保证可以在树莓派上良好的工作。这使得树莓派用户更容易进入和开始他们的项目。

Piwheels logo

当我在2018年10月写piwheels:为树莓派提供快速 Python 包安装piwheels 项目已经进入第一年,并且已经证明了其为树莓派用户节省大量时间和精力。但是这个项目已经进入第二年,它为树莓派提供了预编译的 Python 包走了更长的路。

Raspberry Pi 4

它是怎么工作的

Raspbian,树莓派的主要操作系统,预配置使用 piwheels所以用户不需要做任何特殊的事情就可以使用piwheels。

配置文件(在 /etc/pip.conf)告诉 pip 使用piwheels.org作为 附加索引,因此 pip 首先查看PyPI然后查看 piwheels。piwheels 网站位于树莓派 3的 hosts中该项目建造的所有 wheels 都位于该派上。它每月提供100多万套服务——对于一台35美元的电脑来说还不错

网站除了主要服务于树莓派以外piwheels 项目还对使用其他七个派系统并构建软件包。有人运行 Raspbian Jessie为 Python 3.4 建造 wheels有人运行 Raspbian Stretch 为 Python 3.5,有人运行 Raspbian Buster 为 Python 3.7。该项目通常不支持其他 Python 版本。还有一个“合适的服务器”——运行 Postgres 数据库的虚拟机。由于 派3 只有1GB的内存所以(非常大的)数据库不能在其上很好地运行,所以我们把它移到了虚拟机上。带 4GB 内存的 派4 可能是合适的,所以我们将来可能会用到它。

派都在“派云”中的 IPv6 网络上——这是一项由总部位于剑桥的托管公司Mythic Beasts提供的卓越的服务。 Mythic Beasts hosting service

下载和统计趋势

每次下载 piwheels 文件时,它都会记录在数据库中。这提供了对什么包最受欢迎以及人们使用什么 Python 版本和操作系统的统计。我们没有太多来自用户代理的信息,但是因为 派1/Zero 的架构显示为 “armv6”派2/3/4显示为“armv7”所以我们可以将它们区分开来。

截至2019年12月中旬从派风车下载的软件包超过1400万个仅2019年就有近900万个。

自项目开始以来最受欢迎的10个软件包是:

  1. pycparser (821,060 downloads)
  2. PyYAML (366,979)
  3. numpy (354,531)
  4. cffi (336,982)
  5. MarkupSafe (318,878)
  6. future (282,349)
  7. aiohttp (277,046)
  8. cryptography (276,167)
  9. home-assistant-frontend (266,667)
  10. multidict (256,185)

请注意,许多纯 Python 包,如urllib3,都是作为 PyPI 上的 wheels 提供的;因为这些是跨平台兼容的,所以通常不会从 piwheels 下载因为PyPI优先。

随着时间的推移,我们也看到了使用哪些 Python 版本的趋势。这里显示了 Raspbian Buster 发布时从3.5版快速升级到了Python 3.7:

Data from piwheels on Python versions used over time

你可以看到更多的统计趋势在stats blog posts

节省时间

每个包构建都被记录在数据库中,并且每个下载也被存储。带有构建持续时间的交叉引用下载显示了节省了多少时间。一个例子是 numpy ——最新版本大约需要11分钟来构建。

迄今为止piwheels 项目已经为用户节省了总计超过165年的构建时间。按照目前的使用率piwheels 项目每天节省200多天。

除了节省构建时间,拥有预编译的 wheels 也意味着人们不必安装各种开发工具来构建包。一些包需要其他apt包来访问共享库。弄清楚你需要哪一个可能会很痛苦所以我们也让这一步变得容易了。首先我们找到了这个过程在博客上记录了这个过程。然后,我们将这个逻辑添加到构建过程中,这样当构建一个 wheels 时,它的依赖关系会被自动计算并添加到包的项目页面中:

numpy dependencies

派风车的下一步是什么?

今年,我们推出了项目页面(例如,[numpy][25),这是一种非常有用的方式,可以让人们以人类可读的方式查找项目信息。它们还使人们更容易报告问题,例如 piwheels 中缺少一个项目,或者他们下载的包有问题。

2020年初我们计划对 piwheels 项目进行一些升级以启用新的JSON应用编程接口这样你就可以自动检查哪些版本可用查找项目的依赖关系等等。

下一次 Debian/Raspbian 升级要到2021年年中才会发生所以在那之前我们不会开始为任何新的 Python 版本 制造 wheels。

你可以在这个项目的博客上读到更多关于 piwheels 的信息我将在2020年初在那里发表一篇2019年的综述。你也可以在推特上关注@piwheels,在那里你可以看到每日和每月的统计数据以及任何达到的里程碑。

当然piwheels 是一个开源项目,你可以在GitHub上看到整个项目源代码。


via: https://opensource.com/article/20/1/piwheels

作者:Ben Nuttall 选题:lujun9972 译者:heguangzhi 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出