0

I try to import a module as a parameter in a function. But my PyCharm shows me a error:

Code

#This program schow me all commands from a Modul ( for example os ) def schow(name): import name

a = list((str(dir(name))).split(","))

for i in range(0, len(a)):
    print(str(i) + a[i])

schow(os)

Error

Traceback (most recent call last): File "/Users//PyChrm///.py", line 10, in schow(os) NameError: name 'os' is not defined

Process finished with exit code 1

Kirk Beard
  • 9,569
  • 12
  • 43
  • 47
  • Possible duplicate of [import module from string variable](https://stackoverflow.com/questions/8718885/import-module-from-string-variable). You should check the [`importlib.import_module`](https://docs.python.org/3/library/importlib.html#importlib.import_module) module – chrimaho Jul 19 '22 at 22:27

1 Answers1

0

As commented here, you're looking for the importlib.import_module module.

You can do it like this:

import importlib

# Single line import
importlib.import_module('itertools.combinations')

# Looping import
MODULES = {
    'typing': ['Optional', 'Union', 'List']
}
for (module, submodules) in MODULES.items():
    for submodule in submodules:
        importlib.import_module(f"{module}.{submodule}")

Or you can do it manually, like this:

MODULES = {
    'itertools': ['combinations'],
    'typing': ['Optional', 'Union', 'List']
}

for (module, submodules) in MODULES.items():
    import_str = f"from {module} import {', '.join(submodules)}"
    exec(import_str)
Kirk Beard
  • 9,569
  • 12
  • 43
  • 47
chrimaho
  • 580
  • 4
  • 22