Python社区软件包概况分析

诗书塞外 Python程序员
国外友人对pypi上的Python软件包做了一个统计分析,通过分析的图表我们可以得到一些很有指导意义的结论。

依赖关系图

图中每一个节点都是一个Python软件包,每一条线都表示一个软件包对另一个软件包的依赖。 (这个图感觉好有范儿,有点儿像宇宙星云图) 其中红色的大点,都是社区中的明星软件,被众多其他项目所依赖。

软件重要性排行榜

由于Python软件有上图所示的依赖关系,很显然每个节点的重要程度会有所区别。通过PageRank算法对这些节点进行评分,得出这些节点中重要性Top10的软件包如下: requests高居榜首,是不是说明Python2在urllib和urllib2上的设计让人已经不能忍了。

django和flask位居第2和第5,可见web开发在Python社区中所占的比重。

six排在第三,说明Python社区中大量的软件包都做了Python2和Python3的兼容,大家都不敢只支持Python2,或者只支持Python3。(six是做2和3兼容的一个辅助包)这个结果跟国外的另一个研究的结论也是相似的。

numpy和cython的上榜说明了科学计算也是Python社区非常重要的组成部分。

还有一个不太明显的结论,就是requests和lxml主要是爬虫类软件依赖的比较多。

综上可见:

  1. web开发、爬虫开发、科学计算是Python社区最主要的三大领域。
  2. 同时兼容Python2和Python3还是社区的主流。

嗯嗯,我们Python部落(python.freelycode.com)已经有了网站的课程和爬虫的课程,科学计算的课程看来也是势在必行啊~~

《18天教你写网站》、《一周学会写爬虫》的课程在 Python部落(python.freelycode.com)的网站 --> 左侧“影音学堂”中 欢迎大家参与学习。

聚集程度

Python包被依赖的聚集程度同样符合指数规律,少数最受欢迎的Python包被大量依赖,大多数Python包基本不为人知,不被使用和依赖。

从这些图表中,你是否还能看出一些其他有趣的结论?