分析并輸出Python代碼依賴的庫的實(shí)現(xiàn)代碼
用法:
分析一個腳本的依賴: 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
相關(guān)文章
Python操作Excel文件的11種方法(全網(wǎng)最全)
在日常工作或開發(fā)過程中,Excel文件作為一種常用的數(shù)據(jù)存儲格式,其高效便捷的數(shù)據(jù)處理能力被廣泛應(yīng)用于數(shù)據(jù)統(tǒng)計、數(shù)據(jù)分析等領(lǐng)域,Python作為一種強(qiáng)大的編程語言,提供了豐富的庫支持來實(shí)現(xiàn)對Excel文件的操作,本篇將詳細(xì)介紹如何使用Python來操作Excel文件2025-03-03
python學(xué)習(xí)之SpaCy庫的高級特性詳解
在之前的文章中,我們介紹了SpaCy庫的一些基本概念和功能,在這篇文章中,我們將深入學(xué)習(xí)一些更高級的特性,包括詞向量、依賴性解析、和自定義組件2023-07-07
教你用Django將前端的數(shù)據(jù)存入Mysql數(shù)據(jù)庫
這篇文章主要給大家介紹了關(guān)于如何用Django將前端的數(shù)據(jù)存入Mysql數(shù)據(jù)庫的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-11-11
Python網(wǎng)絡(luò)請求使用Requests庫抓取解析數(shù)據(jù)
在網(wǎng)絡(luò)編程中,請求和接收數(shù)據(jù)是最常見的任務(wù)之一,Python的Requests庫提供了豐富的功能,使得HTTP請求變得非常簡單,在本文中,我們將了解如何使用Requests庫發(fā)起HTTP請求,并解析返回的數(shù)據(jù)2023-08-08
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(10):webpy框架
webpy小巧,簡單,實(shí)用,可以快速的完成簡單的web頁面。這里根據(jù)webpy Cookbook簡要的介紹一下webpy框架,需要的朋友可以參考下2014-06-06
python實(shí)現(xiàn)簡易SSL的項(xiàng)目實(shí)踐
本文主要介紹了python實(shí)現(xiàn)簡易SSL的項(xiàng)目實(shí)踐,包括CA.py、server.py和client.py三個模塊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼
這篇文章主要介紹了Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Python使用multiprocessing創(chuàng)建進(jìn)程的方法
這篇文章主要介紹了Python使用multiprocessing創(chuàng)建進(jìn)程的方法,實(shí)例分析了multiprocessing模塊操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下2015-06-06

