1

I'd like to have a list of the names and files of imported modules form an imported module, like:

#!/usr/bin/python3

import importlib

module = importlib.import_module('someModule')

for mod in module.modules():
    print(mod.name)
    print(mod.file)
chila
  • 2,372
  • 1
  • 16
  • 33

1 Answers1

1

Python3 lets us pull in the module with exec(f'import {module_name}'), putting the result in globals()[module_name], or we can assign mod = importlib.import_module(module_name).

To see what other modules were directly pulled in by that, use:

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__)

One could recurse through the tree to find transitive deps, if desired.

J_H
  • 17,926
  • 4
  • 24
  • 44