[导语] Python 里各种丰富的标准库, 第三方库和模块成为其广受欢迎的原因之一. 而 PyPI 就是大家想第三方库前先要安装的一个仓库. 作为使用者, 它可以帮我们查找 Python 社区开发和共享的软件; 而作为开发者, 可以用 PyPI 分发自己的软件. 从 2003 年创建 PyPI 到现在, 整个社区又是如何发展的? 现状如何? 有哪些有趣的发现, 本文将与大家一起进行初步探索.
构建 PyPI 镜像一件非常酷的事情就是让我掌握了很多的数据. 至此, 我决定探索一下自 2003 年创建 PyPI 以来, 整个生态系统发生了怎样的变化. 不过, 接下来大部分的分析都是始于 2005 年, 这一年 PyPI 添加了 upload_time .
下图展示了 2005-2018 年活跃的 Python Packages 数量, 蓝色表示 Old Packages, 橙色表示 New.
在这十四年间, Python 的生态系统一直在稳步增长. 随着 PyPI 在 Python 社区几乎被完全接受, 在那几年里持高速增长. 之后活跃 Packages 的数量每年增长 28% 到 48%(活跃 Packages 指的是已经发布过一版或发布了新版本).
在这 14 年的时间里, Python 的生态系统一直在稳步增长. 对于 PyPl 而言, 在它被 Python 社区几乎完全接受的那几年里持高速增长状态, Packages (至少更新过一个版本或刚刚上线的) 数量也在活跃增长, 年复合增长率可达 28% 至 48%.
如图所示, 66% 的 Packages 是新发布的, 其中绝大多数不会持续维护; 持续一年以上维护的 Packages 还是保持强劲增长; 每年新上线的 Packages 增幅在 31%~59%, 尽管增速有所减缓, 但势头不减. 这意味着, 整体上看, Packages 正发布着越来越多的版本, 预示着 PyPl 变得越来越成熟.
结果最令我吃惊的是, 每个 Packages 的发布数量. 此前我一直靠个人经验, 升级 Packages 依赖库, 例如 AWS 的 #15 botocore, 但是 ccxt 库 的 "脱颖而出" 是我没想到的. 在不到两年的时间里, ccxt 已经发布了 4659 个版本, 发布数量比其他的 Packages 的 3 倍还多. 但是当我在尝试加载它的时候, libraries.io 页面的加载时间要 30 多秒, 所以, 我也不确定它的维护是好还是坏, 但是真的是让人印象非常深刻!
另外一个有趣的发现是分发 Packages 实践上的变化. 最大的变化是 Python 3 的发布. Binary Wheels 于 2012 年被引入并编入 PEP 427, 被普遍认为是分发 Python Packages 的最佳方式, 但 Packages 作者的接受周期还需要时间. Python Wheels 可以跟踪 PyPI 360 个 Packages 的采用情况, 如下图:
来源: https://juejin.im/post/5c8e0417f265da682068b9ef