我正在接近我的最终目标,即在模块和其他导入的模块之间生成一个很好的图形。生成导入图表
例如,如果从T中y和z,和y的进口X进口和v我想有:
x -> y, z
y -> t, v
现在,我已经有了我的进口吊钩定义见下文,但在运行它简单的文件我没有得到我所期望的:
python study_imports.py CollectImports simple.py
('study_imports.py', 'study_imports')
其中simple.py实际上是从study_imports导入的。 问题是,我想看到“simple.py”,而不是“study_imports.py”,有没有办法让文件的路径实际导入其他模块?
class CollectImports(object):
"""
Import hook, adds each import request to the loaded set and dumps
them to file
"""
def __init__(self, output_file):
self.loaded = set()
self.output_file = output_file
def __str__(self):
return str(self.loaded)
def cleanup(self):
"""Dump the loaded set to file
"""
dumped_str = '\n'.join(x for x in self.loaded)
open(self.output_file, 'w').write(dumped_str)
def find_module(self, module_name, package=None):
#TODO: try to find the name of the package which is actually
#importing something else, and how it's doing it
#use a defualtdict with empty sets as the storage for this job
entry = (__file__, module_name)
self.loaded.add(str(entry))
你知道的[Snakefood的'sfood-graph']( http://furius.ca/snakefood/doc/snakefood-doc.html#seconds-usage-instructions)? –
我现在非常感谢,这是非常好的,但我仍然想让我的版本工作,只是为了理解.. –