Python第三方包处理方法、装置、存储介质及设备制造方法及图纸

技术编号:36091453 阅读:12 留言:0更新日期:2022-12-24 11:08
本申请实施例提供一种Python第三方包处理方法、装置、存储介质及设备,该方法中,针对包含基础信息文件夹的待分析包,通过读取基础信息文件夹中的指定文件来获取对应的模块名,而针对不包含基础信息文件夹的待分析包,通过抽象语法树获取包配置参数,再根据该包配置参数获取对应的模块名,进而记录待分析包的包名和模块名之间的对应关系,以方便用户的开发使用。如此,实现对Python第三方包对应的模块名的自动提取,能够帮助用户准确识别一个包中依赖的模块对应的包名,从而提升用户的开发效率。率。率。

【技术实现步骤摘要】
Python第三方包处理方法、装置、存储介质及设备


[0001]本申请涉及计算机
,具体而言,涉及一种Python第三方包处理方法、装置、存储介质及设备。

技术介绍

[0002]Python是一种面向对象、直译式编程语言,其以简洁的语法、丰富的社区以及强大的跨平台特性得到了工业界和学术界的一致认可。在进行Python开发时,经常需要引用第三方包。然而,由于第三方包和其包含的模块的名称有可能不同,用户在拿到一个第三方包时,如果其中导入了其他模块,用户往往需要猜测、安装可能的包,导致开发效率低下。

技术实现思路

[0003]本申请实施例的目的在于提供一种Python第三方包处理方法、装置、存储介质及设备,以解决相关技术中存在的用户因难以准确识别一个包中依赖的模块对应的第三方包名,导致开发效率低下的问题。
[0004]第一方面,本申请实施例提供的一种Python第三方包处理方法,包括:
[0005]检测待分析包内是否包含基础信息文件夹;
[0006]若所述待分析包内包含基础信息文件夹,通过读取所述基础信息文件夹中的指定文件,获取所述待分析包对应的模块名;
[0007]若所述待分析包内不包含基础信息文件夹,获取包配置参数,根据所述包配置参数获取所述待分析包对应的模块名;
[0008]记录所述待分析包的包名和模块名之间的对应关系。
[0009]在上述实现过程中,针对包含基础信息文件夹的待分析包,通过读取基础信息文件夹中的指定文件来获取对应的模块名,而针对不包含基础信息文件夹的待分析包,获取包配置参数,再根据该包配置参数获取对应的模块名,进而记录待分析包的包名和模块名之间的对应关系,以方便用户的开发使用。如此,实现对Python第三方包对应的模块名的自动提取,能够帮助用户准确识别一个包中依赖的模块对应的包名,从而提升用户的开发效率。
[0010]进一步地,在一些实施例中,所述获取包配置参数,包括:
[0011]通过抽象语法树获取包配置参数;所述抽象语法树的每个节点表示所述待分析包的源代码中的一种结构;所述包配置参数对应所述抽象语法树的其中一个节点。
[0012]在上述实现过程中,提供一种获取包配置参数的解决方案,即通过待分析包的抽象语法树获取。
[0013]进一步地,在一些实施例中,所述抽象语法树基于以下方式获得:
[0014]对所述待分析包进行解压,从解压内容中获取所述待分析包的源代码;
[0015]通过AST模块,将所述源代码转换成抽象语法树。
[0016]在上述实现过程中,提供一种获取抽象语法树的解决方案。
[0017]进一步地,在一些实施例中,所述检测待分析包内是否包含基础信息文件夹,包括:
[0018]检测所述待分析包的打包格式;
[0019]若所述待分析包的打包格式是Wheel格式,确定所述待分析包内包含基础信息文件夹。
[0020]在上述实现过程中,当待分析包是whl包时,直接确定该待分析包内包含基础信息文件夹,提高对待分析包的分析效率。
[0021]进一步地,在一些实施例中,若所述待分析包的打包格式是Tar格式,根据所述待分析包内包含的所有文件夹名称对所述待分析包内是否包含基础信息文件夹进行检测。
[0022]在上述实现过程中,当待分析包是tar包时,先获取该待分析包内包含的所有文件夹名称,再根据获取到的文件夹名称检测该待分析包内是否包含基础信息文件夹,提高对待分析包的分析效率。
[0023]进一步地,在一些实施例中,所述待分析包内包含的所有文件夹名称是通过os.listdir函数获取得到的。
[0024]在上述实现过程中,提供一种获取包内所有文件夹名称的解决方案。
[0025]进一步地,在一些实施例中,所述检测待分析包内是否包含基础信息文件夹,包括:
[0026]获取所述待分析包内包含的所有文件夹名称;
[0027]若所述所有文件夹名称中包含扩展名为dist

info的文件夹名称,确定所述待分析包内包含基础信息文件夹。
[0028]在上述实现过程中,提供一种检测待分析包内是否包含基础信息文件夹的具体解决方案,即先获取待分析包内包含的所有文件夹名称,再在其中查询是否包含扩展名为dist

info的文件夹名称,以此确定待分析包内是否包含基础信息文件夹。
[0029]进一步地,在一些实施例中,所述根据所述包配置参数获取所述待分析包对应的模块名,包括:
[0030]若所述包配置参数的值是包配置搜索函数,将所述所有文件夹名称确定为所述待分析包对应的模块名;
[0031]若所述包配置参数的值是一个列表,将所述列表内记录的名称确定为所述待分析包对应的模块名。
[0032]在上述实现过程中,有条理地、自动地对不包含基础信息文件夹的Python第三方包进行分析,以快速获取到对应的模块名。
[0033]进一步地,在一些实施例中,所述方法还包括:
[0034]通过图或表的形式,对记录的对应关系进行可视化展示。
[0035]在上述实现过程中,对记录的对应关系进行可视化展示,使得用户在开发Python项目时,可以快速查询到需要引用的模块对应的包名,提升用户体验。
[0036]进一步地,在一些实施例中,所述方法还包括:
[0037]在检测到模块导入报错时,根据记录的对应关系,获取报错的模块对应的包名,并根据所述包名安装对应的第三方包。
[0038]在上述实现过程中,自动为用户快速、准确找到所需的第三方包,提升用户的开发
效率。
[0039]第二方面,本申请实施例提供的一种Python第三方包处理装置,包括:
[0040]检测模块,用于检测待分析包内是否包含基础信息文件夹;
[0041]第一获取模块,用于若所述待分析包内包含基础信息文件夹,通过读取所述基础信息文件夹中的指定文件,获取所述待分析包对应的模块名;
[0042]第二获取模块,用于若所述待分析包内不包含基础信息文件夹,获取包配置参数,根据所述包配置参数获取所述待分析包对应的模块名;
[0043]记录模块,用于记录所述待分析包的包名和模块名之间的对应关系。
[0044]第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
[0045]第四方面,本申请实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
[0046]第五方面,本申请实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
[0047]本申请公开的其他特征和优本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Python第三方包处理方法,其特征在于,包括:检测待分析包内是否包含基础信息文件夹;若所述待分析包内包含基础信息文件夹,通过读取所述基础信息文件夹中的指定文件,获取所述待分析包对应的模块名;若所述待分析包内不包含基础信息文件夹,获取包配置参数,根据所述包配置参数获取所述待分析包对应的模块名;记录所述待分析包的包名和模块名之间的对应关系。2.根据权利要求1所述的方法,其特征在于,所述获取包配置参数,包括:通过抽象语法树获取包配置参数;所述抽象语法树的每个节点表示所述待分析包的源代码中的一种结构;所述包配置参数对应所述抽象语法树的其中一个节点。3.根据权利要求2所述的方法,其特征在于,所述抽象语法树基于以下方式获得:对所述待分析包进行解压,从解压内容中获取所述待分析包的源代码;通过AST模块,将所述源代码转换成抽象语法树。4.根据权利要求1所述的方法,其特征在于,所述检测待分析包内是否包含基础信息文件夹,包括:检测所述待分析包的打包格式;若所述待分析包的打包格式是Wheel格式,确定所述待分析包内包含基础信息文件夹。5.根据权利要求4所述的方法,其特征在于,若所述待分析包的打包格式是Tar格式,根据所述待分析包内包含的所有文件夹名称对所述待分析包内是否包含基础信息文件夹进行检测。6.根据权利要求5所述的方法,其特征在于,所述待分析包内包含的所有文件夹名称是通过os.listdir函数获取得到的。7.根据权利要求5所述的方法,其特征在于,所述检测待分析包内是否包含基础信息文件夹,包括:获取所述待分析包内包含的所有文件夹名称;若所述所有文件夹名称中包含扩展名为di...

【专利技术属性】
技术研发人员:胡霄应凌云
申请(专利权)人:奇安信科技集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1