[发明专利]一种检测python环境中依赖冲突的方法有效
申请号: | 202011640702.8 | 申请日: | 2020-12-31 |
公开(公告)号: | CN112631607B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 李朕名;王莹;王一博;王超;于海;朱志良 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/71 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李运萍 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 python 环境 依赖 冲突 方法 | ||
本发明提供一种检测python环境中依赖冲突的方法,包括:步骤1:构建元数据存储库:获取PYPI所有开源项目名称,判断是否为新增项目;获取全部项目更新版本;获取全部项目更新版本的直接依赖关系;建立全局依赖网络,为每个项目形成依赖关系树。步骤2:分析项目更新引起的依赖问题:获取基础检测数据;查找被分析项目实际安装依赖项;建立被分析项目的完全依赖树及具体安装版本;检测依赖冲突问题;若未发现依赖冲突问题,执行预测问题分析;针对已发生的依赖冲突问题,向开发者推送解决方案。本发明可以持续监控PYPI生态系统的更新,对已发生依赖冲突的检测和可能发生依赖冲突的预测。通过本发明给出的修复意见,能够提供最佳解决方案。
技术领域
本发明涉及软件可靠性领域,特别涉及一种检测python环境中依赖冲突的方法。
背景技术
在软件开发的过程中,会在项目中引入大量第三方开源项目来节约开发成本。PYPI是Python项目的主要中央存储库,它索引了数百万个项目,允许开发人员根据指定的版本约束自动下载和安装项目的依赖项。开发人员需要指定所需的版本约束在配置文件中。setup.py和requirements.txt是Python的依赖管理配置文件,和Java中的POM文件类似,记录了当前程序的所有依赖项及其版本约束。当一个项目引入第三方开源项目时,这个项目和它所依赖的其他软件项目将在构建时自动安装。PYPI可以自动化安装依赖项,极大地简化了Python项目的构建过程。此外,版本约束机制允许开发人员将依赖项限制到一组兼容的版本范围,并支持依赖项的自动演化。然而,这样的自动化伴随着潜在的依赖冲突问题的风险,当项目的安装版本违反了项目的版本范围约束时,可能会导致构建失败。
Python项目大多是在一个自包含的环境中开发的,可以使用virtualenv、conda和pipenv等工具创建。pip是一个通用的Python包管理工具。提供了对Python包的查找、下载、安装、卸载的功能。在构建Python项目时,客户端库安装程序pip会在PYPI上下载大部分所需的依赖项。我们将需要下载的这些库称为远程依赖项。对于每个需要的远程依赖项,pip根据其名称和版本约束从PYPI下载。如果pip找到满足版本约束的依赖项的多个版本,它将下载并安装最新版本的依赖文件。
PYPI允许Python开发人员将他们的项目作为软件包发布。然而当一个项目发生构建失败时,这个失败会影响所有下游项目的构建。因此,PYPI中的项目构建失败的后果是严重的。PYPI上托管的许多项目都经常更新。这些更新可能会产生严重的影响,因为它们可能会影响他们的下游项目。PYPI中频繁的库更新导致依赖冲突问题迫在眉睫。
目前,PYPI上的项目很难获得带有版本约束的完整依赖关系图。即使python中最先进管理工具,如pipenv和poetry,也只能显示出安装了哪些依赖项,而不显示它们具体的依赖关系。在python生态环境中,开发人员迫切的需要能生成依赖关系图并够诊断依赖冲突问题工具。当前还没有能合适的技术方案和工具来解决越来越严重的依赖冲突问题。
根据研究结果表明,目前依赖问题检测的局限性是由于上游和下游项目之间的复杂依赖关系造成的。
发明内容
针对于现有技术的缺陷,本发明提供了一种检测python环境中依赖冲突的方法,从整个生态系统的角度不断监视依赖冲突。首先通过收集每个项目的版本数据,包括与直接依赖的版本约束关系及其声明顺序。其次,它为所有驻留在PYPI上的库构建了一个元数据存储库,以便能够分析上游和下游项目之间的版本约束的干扰。然后,通过持续监控PYPI上的项目发布信息,本发明同步更新元数据存储库,精确地建模依赖关系。对于捕获的项目更新,使用深度优先搜索策略来识别受影响的下游项目。本发明还对元数据存储库执行广度优先搜索,以便根据pip的依赖安装规则为每个可能受影响的下游项目构建完整的依赖关系图。最后,实现了依赖冲突问题的自动诊断与预测。
一种检测python环境中依赖冲突的方法,包括流程如下:
步骤1:构建元数据存储库,包括如下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011640702.8/2.html,转载请声明来源钻瓜专利网。