[发明专利]一种检测python环境中依赖冲突的方法有效
申请号: | 202011640702.8 | 申请日: | 2020-12-31 |
公开(公告)号: | CN112631607B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 李朕名;王莹;王一博;王超;于海;朱志良 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/71 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李运萍 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 python 环境 依赖 冲突 方法 | ||
1.一种检测python环境中依赖冲突的方法,其特征在于,包括流程如下:
步骤1:构建元数据存储库,包括如下步骤:
步骤:1.1:获取PYPI所有开源项目名称,判断是否为新增项目,若是则记录名称,若否则不用记录名称;
步骤1.2:获取当前PYPI中所有开源项目版本信息,与数据库对比,获取全部项目更新版本;
步骤1.3:获取全部项目更新版本的直接依赖关系;
步骤1.4:建立全局依赖网络,为每个项目形成依赖关系树;
步骤2:分析项目更新引起的依赖问题,包括如下步骤:
步骤2.1:根据步骤1构建的元数据存储库获取基础检测数据;
步骤2.2:查找被分析项目实际安装依赖项;
步骤2.3:通过步骤2.2,建立被分析项目的完全依赖树及具体安装版本;
步骤2.4:检测依赖冲突问题;
步骤2.5:若未发现依赖冲突问题,执行预测问题分析;
步骤2.6:针对已发生的依赖冲突问题,向开发者推送解决方案。
2.根据权利要求1所述检测python环境中依赖冲突的方法,其特征在于,所述步骤1.3的过程如下:
步骤1.3.1:获取全部项目更新版本详细信息,与临时队列中数据进行匹配,查询出所有项目对应本次更新版本的下载链接;
步骤1.3.2:下载链接中的安装包,执行uncompress方法进行解压缩操作,解压后将非依赖配置文件删除,仅保留项目依赖配置文件;
步骤1.3.3:读取步骤1.3.2中保留的配置文件,通过正则表达式匹配其中的依赖信息,将其存储于package_info数据表中,从而获取项目更新版本直接依赖关系。
3.根据权利要求1所述检测python环境中依赖冲突的方法,其特征在于,所述步骤1.4的过程如下:
步骤1.4.1:获取全部项目名存于NameList中,定义Pi为根节点项目,将Pi属于NameList的最新版本视为搜索的起始节点,逐一开始遍历NameList;
步骤1.4.2:解析Pi的setup.py文件,根据广度优先拓扑加载顺序,求得并下载Pi直接依赖的包D(Pi)的实际安装版本作为与其直接相连的节点,而二者的边权值包括版本范围、优先级;
步骤1.4.3: 解析D(Pi)的setup.py文件,根据广度优先的拓扑加载顺序,求得并下载D(Pi) 相对于根节点项目pi的直接依赖的包的实际安装版本,将其作为与之连接的节点,同时赋予边权值包括版本范围、优先级;
步骤1.4.4:循环执行步骤1.4.1至步骤1.4.3,直到将所有根节点项目pi直接依赖和间接依赖的package下载完毕为止,若存在依赖冲突的节点,则将加载优先级高的节点定为已安装节点。
4.根据权利要求1所述检测python环境中依赖冲突的方法,其特征在于,所述步骤2.2的过程如下:
定义conflict_list为被分析项目的冲突状态位,用于记录被分析项目的依赖节点信息引起依赖冲突问题的状态;priority_list为根节点项目Pi的优先级队列,用于记录实际安装时,进入依赖树的安装顺序优先级;node_list为根节点项目Pi的实际安装依赖项名称;version_list为根节点项目Pi的实际依赖项的安装版本;
步骤2.2.1:通过被分析项目和版本号,查询到该版本被分析项目的直接依赖和依赖版本范围,遍历conflict_list,priority_list,node_list,version_list, range_list队列,查询依赖项和依赖版本范围是否与优先级较高的依赖项存在交集,记录判断信息,若有则取优先级高的依赖项的版本作为自身版本存入队列中,若没有则将符合依赖范围的最新版本存入队列中,并记录优先级,节点名及冲突状态;
步骤2.2.2:通过广度优先搜索,查询被分析项目和版本号对应全部直接依赖与间接依赖节点,再依次执行步骤2.2.1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011640702.8/1.html,转载请声明来源钻瓜专利网。