How do you dynamically add Python modules to a package while your programming is running?

PythonServer Side ProgrammingProgramming

To dynamically import Python modules, you can use the importlib package's import_module(moduleName) function. You need to have moduleName as a string. For example,

>>> from importlib import import_module
>>> moduleName = "os"
>>> globals()[moduleName] = import_module(moduleName)

If you want to dynamically import a list of modules, you can even call this from a for loop. For example,

>>> import importlib
>>> modnames = ["os", "sys", "math"]
>>> for lib in modnames:
...     globals()[lib] = importlib.import_module(lib)

The globals() call returns a dict. We can set the lib key for each library as the object returned to us on import of a module.

If you've imported a package and now want to dynamically import one of its module, you can still use the same function and get the expected result. The module you want to import should have its full name and not just the module name. For example,

>>> import importlib
>>> pack = 'datetime'
>>> mod = 'date'
>>> globals()[pack] = importlib.import_module(pack)
>>> globals()[pack + '.' + mod] = importlib.import_module(pack + '.' + mod)
Published on 20-Dec-2017 11:38:02