• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

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

#!/usr/bin/env python# encoding: utf-8# source: https://github.com/MrLYC/ycyc/<strong style="color:transparent">本文来源gaodai#ma#com搞@@代~&码网^</strong>blob/dev/tools/analysis_dependency.pyimport astimport importlibimport inspectclass 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

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:分析并输出Python代码依赖的库的实现代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址