I am trying to import the members of a module whose name is not known. Instead of
import foo
I am using:
__import__("foo")
How can I achieve a similar thing for the from foo import bar case instead of resorting to an "eval"?
Update: It seems fromlist did the trick. Is there a way to emulate from foo import *? fromlist=['*'] didn't do the trick. 
To emulate from foo import * you could use dir to get the attributes of the imported module:
foo = __import__('foo')
for attr in dir(foo):
    if not attr.startswith('_'):
        globals()[attr] = getattr(foo, attr)
Using from foo import * is generally frowned upon, and emulating it even more so, I'd imagine.
__import__("foo", fromlist=["bar"])
for more information help(__import__)
You can dynamically import with the help of __import__. There are fromlist key argument in __import__ to call from foo import bar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With