Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
Django是最流行的Python web框架,到现在已经有12年的历史。从小型到超大型,从重内容网站到纯API后端,Django可以胜任几乎所有不同类型的项目。
在pyup.io 我们相当关注requirement files和依赖关系。幸运的是,BigQuery提供了GitHubs数据,这样我们可以运行一个查询,这个查询让我们有权限通过公共repos.*来访问所有requirement files。
让我们来看看Django的使用情况。
*完整的数据集可以在
pyupio/github-requirements
获得。它包含了所有的原始requirement files,和一个预处理索引。
Django 开发者固定(freeze)他们的requirements
固定或冻结的requirements (Django==1.8.12) 使构造可预测和可确定。由于Django主要用于搭建终端产品,新的主要发行版可能包含突破性的API改动,因此,应该明确告知pip具体要安装哪个版本的包。这就是大部分Django开发者的看法:64%固定了他们的requirements。
第二大选项是占24%的有范围的requirements(Django>=1.8,<1.9) 。这样可以防止新的主要发行版本出现问题,但仍有一些问题。构建不再是确定性的,并且无法通过单独查看requirement files来判断服务器上当前正在运行的版本。
版本不确定的requirements不受欢迎,只占11%。
Django 1.8是最流行的主要发布版本
Django 1.8 是旧的LTS发行版并且是最广泛使用的,占24%。对于较旧的项目来说,不失为一个好的选择,它仍然会收到安全更新,直到2018年4月。
令人担忧的是第二,第三和第四名的版本1.9(14%),1.7(13%)和1.6(13%)。所有这些发行版都不再接收安全更新,1.7年和1.6已经结束生命周期超过2年。
只有2%的Django项目跑在安全的发行版上
在所有项目中,超过60%的用户使用含有一个或多个已知安全漏洞的Django发行版。只有2%使用安全的Django发行版。
在剩下的超过30%的项目中,完全不清楚需要安装什么才能运行。这是因为Django发行版(的需求文件)是不固定的或是范围的。
Django核心开发人员可以非常好地处理安全问题。所有这些都分配了CVE,并通过多个渠道公布了安全补丁。如果您在您其中一个项目中使用Django,请务必定期更新。如果您不想使用最新功能,请留在其中一个LTS发行版中,并留意更新。
在pyup.io,我们有多种工具可以帮助您。当您使用的依赖关系中含有已知安全漏洞的时候, Safety命令行工具会警告您。如果您使用GitHub,请查看Safety CI或配置pyup-bot以接收安全更新。
零点发行版很流行
所有Django发行版中排名前10的包含三个零点发行版:第一是1.8,第四是1.7,第十是1.9。第二受欢迎的发行版是Django 1.6.5,紧随其后的是第三名1.8.4。
最新的LTS发行版1.8.18,排第49位。最新稳定发行版1.11.2,排第107。最新的上代稳定版,1.10.7,排第51,最后是最新的前代稳定版,1.9.13,排第83。
结论
总而言之,查看像Django一样成熟的框架的原始数字是非常有趣的。安全图表有点令人震惊,但并没有计算项目活动情况。把项目按照特定年龄和活动来分段查看,结果肯定会看起来非常有趣。可能没有这么多的活动项目仍然使用Django 1.4。
还有一些有趣的问题留待后续发布。
英文原文:https://pyup.io/posts/analyzing-django-requirement-files-on-github/
译者:ChengQuan17