当前位置: 首页 > 科技观察

piwheels如何为RaspberryPi用户节省时间

时间:2023-03-12 02:36:29 科技观察

通过为RaspberryPi提供预编译的Python包,piwheels项目为用户节省了大量时间和精力。piwheels自动为Python包索引PiPi上的所有项目构建Pythonwheels(预编译的Python包),并使用RaspberryPi硬件确保兼容性。这意味着当RaspberryPi用户想要使用pip安装Python库时,他们会得到一个保证在RaspberryPi上运行良好的预编译版本。这使得RaspberryPi用户更容易上手并开始他们的项目。Piwheels徽标当我在2018年10月编写piwheels:RaspberryPi的快速Python包安装时,piwheels项目已经存在了一年,并且已经证明自己可以为RaspberryPi用户节省大量时间和精力。但随着该项目进入第二年,它做了更多工作,为树莓派提供预编译的Python包。RaspberryPi4工作原理Raspbian是RaspberryPi的主要操作系统,预先配置为使用piwheels,因此用户无需执行任何特殊操作即可使用piwheels。配置文件(在/etc/pip.conf中)告诉pip使用piwheels.org作为附加索引,因此pip将首先查找PyPI,然后查找piwheels。piwheels网站托管在RaspberryPi3上,该项目构建的所有轮子都托管在该树莓派上。它每月提供超过一百万个包裹——对于一台35美元的电脑来说还不错!除了为网站提供服务的主要RaspberryPi之外,piwheels项目还使用其他七个RaspberryPi来构建包。其中一些运行RaspbianJessie,为Python3.4构建轮子;其他人运行为Python3.5构建的RaspbianStretch;还有一些运行为Python3.7构建的RaspbianBuster。项目一般不支持其他Python版本。还有一个“合适的服务器”——一个运行Postgres数据库的虚拟机。由于RaspberryPi3只有1GB内存,(非常大的)数据库无法在其上运行良好,因此我们将其移至虚拟机。具有4GBRAM的RaspberryPi4可能会可用,因此我们将来可能会使用它。这些RaspberryPi都位于“PiCloud”中的IPv6网络上——这是剑桥托管公司MythicBeasts提供的一项出色服务。MythicBeasts托管服务下载和统计趋势每次下载piwheels文件时,它都会记录在数据库中。这提供了有关哪些包最受欢迎以及人们使用哪些Python版本和操作系统的统计信息。我们没有太多来自用户代理的信息,但由于RaspberryPi1/Zero的架构显示为“armv6”,而RaspberryPi2/?显示为“armv7”,我们可以区分它们。截至2019年12月中旬,piwheels已下载超过1400万个包,仅2019年就接近900万个。自项目开始以来最受欢迎的10个软件包是:pycparser(821,060次下载)PyYAML(366,979次下载)numpy(354,531次下载)cffi(336,982次下载)MarkupSafe(318,878次下载)future(282,349次下载)aiohttp(277,046次下载)cryptography(276,167次下载))home-assistant-frontend(266,667次下载)multidict(256,185次下载)请注意,许多纯Python包(例如urllib3)在PyPI上作为轮子提供;因为这些是跨平台兼容的,所以通常不会从piwheels下载,因为PyPI优先。我们还看到了随着时间的推移使用Python版本的趋势。这显示了RaspbianBuster发布时从版本3.5到Python3.7的快速升级:来自piwheels的数据随着时间的推移使用的Python版本您可以在我们的这篇统计博客文章中看到更多统计趋势。节省时间每个包构建都记录在数据库中,每次下载也被存储。交叉引用下载计数和构建时间显示节省了多少时间。一个例子是numpy——最新版本的构建大约需要11分钟。迄今为止,piwheels项目共为用户节省了超过165年的构建时间。按照目前的使用率,piwheels项目每天可节省200多天。除了节省构建时间之外,拥有预编译的轮子还意味着人们不必安装各种开发工具来构建包。一些包需要其他apt包来访问共享库。弄清楚您需要哪一个可能会很痛苦,因此我们也简化了这一步。首先,我们找到了过程,并将其记录在博客上。然后我们将此逻辑添加到构建过程中,以便在构建轮子时自动计算其依赖项并将其添加到包的项目页面:numpydependenciespiwheels的下一步是什么?今年,我们推出了项目页面(例如,numpy),这是一种非常有用的方式,可以让人们以人类可读的方式查找项目信息。它们还使人们更容易报告问题,例如piwheels中缺少的项目,或者他们下载的包有问题。在2020年初,我们计划对piwheels项目进行一些升级以启用新的JSONAPI,这样您就可以自动检查可用的版本、查找项目的依赖项等。下一次Debian/Raspbian升级要到2021年年中才会发生,所以在那之前我们不会开始为任何新的Python版本构建轮子。您可以在该项目的博客上阅读有关piwheels的更多信息,我将在2020年初发布2019年的综述。您还可以在Twitter上关注@piwheels,您可以在其中查看每日和每月的统计数据以及达到的任何里程碑。当然,piwheels是一个开源项目,你可以在GitHub上看到整个项目源码。