列出Python 3中导入模块中的导入模块

时间:2019-05-27 15:25:34

标签: python-3.x

我想列出一个导入模块的名称和文件列表,例如:

#!/usr/bin/python3

import importlib

module = importlib.import_module('someModule')

for mod in module.modules():
    print(mod.name)
    print(mod.file)

1 个答案:

答案 0 :(得分:1)

Python3让我们使用exec(f'import {module_name}')引入模块,将结果放入globals()[module_name], 或者我们可以分配mod = importlib.import_module(module_name)

要查看由此直接引入了哪些 other 个模块,请使用:

def is_module(x):
    return str(type(x)) == "<class 'module'>"


def show_deps(mod):
    for name in dir(mod):
        val = getattr(mod, name)
        if is_module(val):
            print(name, val.__file__)

如果需要,可以递归遍历树以找到可传递的deps。