获取所有动态和二级导入的名称

时间:2019-02-06 14:36:46

标签: python

我在一个复杂的项目中工作,其中包含许多子目录/软件包。

是否可以打印给定项目目录中使用的所有第二级/动态模块

例如,如果我使用以下导入:from core.dependency.checkpoints_dependency.checkpoints_manager import CheckpointsManagerimport scipy,则希望打印core.dependency.checkpoints_dependency.checkpoints_managerscipy

1 个答案:

答案 0 :(得分:1)

尝试使用os.walk解析目录,然后检查系统模块中的目录:

import sys
import os

all_modules = []

for dirpath, dirnames, filenames in os.walk(YOUR_PROJECT_DIRECTORY):
    module_names = set(sys.modules)
    modules_in_file = [sys.modules[name] for name in module_names]
    all_modules.extend(modules_in_file)

print(set(all_modules))