分析并输出Python代码依赖的库的实现代码
发布时间:2020-05-23 20:16:09 所属栏目:Python 来源:互联网
导读:用法:分析一个脚本的依赖:analysis_dependency.pyscript1.py递归分析依赖:analysis_dependency.pyscript1.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
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
