简说Python生态系统的14年演变

【导语】Python 里各类丰富的标准库、第三方库和模块成为其广受欢迎的缘由之一。而 PyPI 就是你们想第三方库前先要安装的一个仓库。做为使用者,它能够帮咱们查找 Python 社区开发和共享的软件;而做为开发者,能够用 PyPI 分发本身的软件。从 2003 年建立 PyPI 到如今,整个社区又是如何发展的?现状如何?有哪些有趣的发现,本文将与你们一块儿进行初步探索。python

构建 PyPI 镜像一件很是酷的事情就是让我掌握了不少的数据。至此,我决定探索一下自 2003 年建立 PyPI 以来,整个生态系统发生了怎样的变化。不过,接下来大部分的分析都是始于 2005 年,这一年 PyPI 添加了 upload_time 。cdn

下图展现了2005-2018 年活跃的 Python Packages 数量,蓝色表示 Old Packages,橙色表示 New。blog

在这十四年间,Python 的生态系统一直在稳步增加。随着 PyPI 在 Python 社区几乎被彻底接受,在那几年里持高速增加。以后活跃 Packages 的数量每一年增加 28% 到 48%(活跃 Packages 指的是已经发布过一版或发布了新版本)。图片

在这14年的时间里,Python的生态系统一直在稳步增加。对于PyPl而言,在它被Python社区几乎彻底接受的那几年里持高速增加状态, Packages (至少更新过一个版本或刚刚上线的)数量也在活跃增加,年复合增加率可达28%至48%。开发

img

如图所示,66%的Packages是新发布的,其中绝大多数不会持续维护;持续一年以上维护的Packages仍是保持强劲增加;每一年新上线的Packages增幅在31%~59%,尽管增速有所减缓,但势头不减。这意味着,总体上看,Packages正发布着愈来愈多的版本,预示着PyPl变得愈来愈成熟。get

img

结果最令我吃惊的是,每一个Packages的发布数量。此前我一直靠我的经验,升级Packages依赖库,例如 AWS 的 #15 botocore,可是 ccxt 库 的“脱颖而出”是我没想到的。在不到两年的时间里,ccxt 已经发布了 4659 个版本,发布数量比其余的 Packages 的 3 倍还多。可是当我在尝试加载它的时候, libraries.io 页面的加载时间要 30 多秒,因此,我也不肯定它的维护是好仍是坏,可是真的是让人印象很是深入!it

另一个有趣的发现是分发 Packages实践上的变化。最大的变化是 Python 3 的发布。Binary Wheels 于 2012 年被引入并编入 PEP 427,被广泛认为是分发 Python Packages 的最佳方式,但 Packages 做者的接受周期还须要时间。Python Wheels 能够跟踪 PyPI 360 个 Packages 的采用状况,以下图:io

img

(图片来源:pythonwheels.com/)社区

并非每一个 Packages 都将做为 wheel 发布,特别是 psycopg2 立刻就要中止发布了,其捆绑的 LibSSL 和系统自带的 LibSSL 间有冲突,不过这种状况并不常见,因此但愿将来能够有更多的 Packages 被做为 wheel 分发,保持如今的强劲势头,能够达到 90% 乃至更多。若是按照下面图中趋势的发展,也许 2022 年就能够实现了。class

img
相关文章
相关标签/搜索