分析并输出Python代码依赖的库
发布时间:2020-12-17 17:18:49 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/env python# encoding: utf-8# source: https://github.com/MrLYC/ycyc/blob/dev/tools/analysis_dependency.pyimport astimport importli
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/usr/bin/env python # encoding: utf-8 # source: https://github.com/MrLYC/ycyc/blob/dev/tools/analysis_dependency.py import ast import importlib import inspect class Analysis(ast.NodeTransformer): def __init__(self,paths,recursion): self.modules = list() self.paths = list(paths) self.recursion = recursion def add_module(self,module): if module and module not in self.modules: self.modules.append(module) if self.recursion: try: path = inspect.getsourcefile(importlib.import_module(module)) if path: self.paths.append(path) except: pass def visit_Import(self,node): for i in node.names: self.add_module(i.name) def visit_ImportFrom(self,node): self.add_module(node.module) def analysis(self): for p in self.paths: try: with open(p,"rt") as fp: self.visit(ast.parse(fp.read(),p)) except: pass return tuple(self.modules) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser() parser.add_argument("paths",nargs="+") parser.add_argument("-r","--recursion",action="store_true",default=False) args = parser.parse_args() analysisor = Analysis(args.paths,args.recursion) for m in analysisor.analysis(): print m 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |