分析并输出Python代码依赖的库的实现代码
作者:mdxy-dxy 发布时间:2022-04-05 17:07:23
标签:Python,依赖的库
用法:
分析一个脚本的依赖: 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


猜你喜欢
- 在上一篇博客中,已经将环境搭建好了。现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算。创建模拟器在运
- 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称
- Python 字符串格式化使用 "字符 %格式1 %格式2 字符"%(变量1,变量2),%格式表示接受变量的类型。简单的
- 方式1:静态获取,通过直接解析checkpoint文件获取变量名及变量值通过reader = tf.train.NewCheckpointR
- 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。回忆一下Animal类层次的设计,假设我们要实现以下4种动物:&
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。JSON 函数使用 JSON
- 摘录 – Parse JavaScript SDK现在提供了支持大多数异步方法的兼容jquery的Promises模式,那么这意味着什么呢,
- replace() 方法用于将字符串用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 需要注意的是:如果用正则表达式替换时, r
- 这篇文章主要介绍了python imread、newaxis用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 你的设计为什么平平无奇,为什么吸引不到别人的眼球,这里先来说说什么是焦点(也可以称兴趣中心或者视觉中心),我认为用焦点更能简单准确的阐述。有
- 注:本文是应Alan邀请为《CSS布局实录》写的一个web标准入门指导。书已经上市近一年了,现在摘选出来,给初学者一个参考。希望了解更多实现
- 如何提高SQL Server数据库的性能,该从哪里入手呢?笔者认为,该遵循从外到内的顺序,来改善数据库的运行性能。如下图: 第一层
- python3中的字符串是一种常见的数据类型。字符串有多种表现形式:单引号、双引号和三引号,且这些字符串的表现形式(单、双、三)都必须是成对
- git fetch和git pull都可以将远端仓库更新至本地那么他们之间有何区别?想要弄清楚这个问题有有几个概念不得不提。FETCH_HE
- 本文实例讲述了python通过pil模块将raw图片转换成png图片的方法。分享给大家供大家参考。具体分析如下:python通过pil模块将
- 为了安全起见,需要经常对数据库作备份,或者还原。对于 MySQL 而言,最方便的方法可能就是用 phpMyAdmin 的导出、导入功能了,但
- 项目地址:https://github.com/MrWayneLee/weather-demo代码部分下载生成文件功能# 下载并生成文件de
- 在使用javascript过程中,想循环遍历一个数组,经常使用的语法有两种: for (var i; i < array.l
- 思路:调用第三方支付 API 接口实现支付功能。本来想用支付宝来实现第三方网站的支付功能的,但是在实际操作中发现支付宝没有 Python 接
- Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数