Asked By – theta
I’m working on a documentation (personal) for nested matplotlib (MPL) library, which differs from MPL own provided, by interested submodule packages. I’m writing Python script which I hope will automate document generation from future MPL releases.
I selected interested submodules/packages and want to list their main classes from which I’ll generate list and process it with
Problem is that I can’t find a way to instruct Python to load submodule from string. Here is example of what I tried:
import matplotlib.text as text x = dir(text)
i = __import__('matplotlib.text') y = dir(i)
j = __import__('matplotlib') z = dir(j)
And here is 3 way comparison of above lists through pprint:
I don’t understand what’s loaded in
y object – it’s base
matplotlib plus something else, but it lack information that I wanted and that is main classes from
matplotlib.text package. It’s top blue coloured part on screenshot (
Please don’t suggest Sphinx as different approach.
Now we will see solution for issue: import module from string variable
__import__ function can be a bit hard to understand.
If you change
i = __import__('matplotlib.text')
i = __import__('matplotlib.text', fromlist=[''])
i will refer to
In Python 2.7 and Python 3.1 or later, you can use
import importlib i = importlib.import_module("matplotlib.text")
If you’re trying to import something from a sub-folder e.g.
./feature/email.py, the code will look like
You can’t import anything if there is no
__init__.pyin the folder with file you are trying to import