最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

分析并输出Python代码依赖的库的实现代码

来源:动视网 责编:小采 时间:2020-11-27 14:41:51
文档

分析并输出Python代码依赖的库的实现代码

分析并输出Python代码依赖的库的实现代码:用法: 分析一个脚本的依赖: analysis_dependency.py script1.py 递归分析依赖: analysis_dependency.py script1.py -r #!/usr/bin/env python # encoding: utf-8 # source: https://github.com/MrLYC/
推荐度:
导读分析并输出Python代码依赖的库的实现代码:用法: 分析一个脚本的依赖: analysis_dependency.py script1.py 递归分析依赖: analysis_dependency.py script1.py -r #!/usr/bin/env python # encoding: utf-8 # source: https://github.com/MrLYC/


用法:
分析一个脚本的依赖: analysis_dependency.py script1.py
递归分析依赖: analysis_dependency.py script1.py -r

#!/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

文档

分析并输出Python代码依赖的库的实现代码

分析并输出Python代码依赖的库的实现代码:用法: 分析一个脚本的依赖: analysis_dependency.py script1.py 递归分析依赖: analysis_dependency.py script1.py -r #!/usr/bin/env python # encoding: utf-8 # source: https://github.com/MrLYC/
推荐度:
标签: 代码 源代码 分析
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top