动态导入Python模块

ust*_*tun 8 python import

我试图导入名称未知的模块的成员.代替

import foo
Run Code Online (Sandbox Code Playgroud)

我在用:

__import__("foo")
Run Code Online (Sandbox Code Playgroud)

如何才能为from foo import bar案件实现类似的事情,而不是诉诸"eval"?

更新:似乎fromlist成功了.有办法模仿from foo import *吗?fromlist=['*']没有做到这一点.

zee*_*kay 10

要模拟,from foo import *您可以使用dir获取导入模块的属性:

foo = __import__('foo')
for attr in dir(foo):
    if not attr.startswith('_'):
        globals()[attr] = getattr(foo, attr)
Run Code Online (Sandbox Code Playgroud)

from foo import *我想,使用通常是不受欢迎的,并且更加模仿它.


lol*_*llo 9

__import__("foo", fromlist=["bar"])
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息 help(__import__)