输出python模块依赖
2016-03-11 13:20
399 查看
#!/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简史
- SciPy入门指南
- 【零基础入门学习Python笔记011】一个打了激素的数组2
- python 字典详解 二(字典拓展使用 )
- Python基础
- Python学习第一课
- python之路-socket进阶篇,多线程、多进程
- Python “黑魔法” 之 Meta Classes
- Where is the python library installed?
- Python基本语法经典教程
- python之sorted、map、reduce、join、split函数的实例操作
- python version 2.7 required,which was not found in the registry
- 数据挖掘之推荐分析--python实现
- [整理] python的正则表达式re模块的常用方法
- python windows 安装包
- 【零基础入门学习Python笔记010】一个打了激素的数组1
- KNN及其改进算法的python实现
- Python使用PIL库实现验证码图片的方法
- oozie4.3.0安装过程(支持python spark action)