专栏名称: Python程序员
最专业的Python社区,有每日推送,免费电子书,真人辅导,资源下载,各类工具。我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动
目录
相关文章推荐
Python爱好者社区  ·  疯狂!某 211 高校软件工程招近 ... ·  3 天前  
Python爱好者社区  ·  重磅!又一本《大模型书》开源,449页PDF! ·  3 天前  
Python中文社区  ·  买不到,根本买不到!试试沪深300ETF ·  3 天前  
Python中文社区  ·  狠抓龙头股!股市暴涨下的核心财富密码 ·  5 天前  
Python中文社区  ·  牛市开户不需要找关系,找我就行! ·  1 周前  
51好读  ›  专栏  ›  Python程序员

在GitHub上分析Django的requirement files

Python程序员  · 公众号  · Python  · 2017-06-23 09:00

正文

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