一般来说,我想了解我的项目中的代码究竟是从大框架实际使用的代码。分析python项目导入
首先我想知道什么是所有的进口(可能与静态分析),然后如果可能的话,实际使用这些进口中的哪一个。
对于第一个问题,我可以使用正则表达式当然,但我想找到一个更清洁的方式。 但我不知道如何与ast/inspect/parser。
关于第二个问题,我应该能够自动找出如果一些进口实际上未使用,但我该怎么做?
关于第二个问题编辑: 也许最好的方法是一个简单的导入钩子,它只记录它被导入的所有东西,然后调用默认的导入机制。
所以,我想是这样的:
class MyLoader(object):
"""
Loader object
"""
def __init__(self):
self.loaded = set()
def find_module(self, module_name, package=None):
print("requesting %s" % module_name)
self.loaded.add(module_name)
return self
def load_module(self, fullname):
fp, pathname, stuff = imp.find_module(fullname)
imp.load_module(fullname, fp, pathname, stuff)
但是,试图导入“随机”我得到 从未来进口部 导入错误:没有模块名为未来
我想这手段我错过了一些东西.. 我还没有找到任何使用imp来做一些导入反思的简单例子,任何提示?
是肯定的,有中到底发生了什么静态分析不能很好地工作一个明确的说法。然而,Pylint的确做得相当不错,但我认为它的代码非常繁重。 有关我使用导入器协议的尝试,请参阅上面的内容。 –