It is expecting my_module
to be a package containing a module named 'my_class'
. If you need to import a class, or an attribute in general, dynamically, just use getattr
after you import the module:
cls = getattr(import_module('my_module'), 'my_class')
Also, yes, it does only work with modules. Remember importlib.import_module
is a wrapper of the internal importlib.__import__
function. It doesn’t offer the same amount of functionality as the full import
statement which, coupled with from
, performs an attribute look-up on the imported module.