我尝试按__import__
导入模块,如下所示:
>>> mod = __import__('x.y.z')
但我只有x
:
>>> print mod
>>> <module 'x' from '...'>
如何导入z
?我试过这样,它有效,但我不知道为什么。
>>> mod = __import__('x.y.z', {}, {}, [''])
>>> print mod
>>> <module 'x.y.z' from '...'>
我对此非常困惑,而且我也不知道globals
和locals
参数。
很多!
答案 0 :(得分:0)
请改用importlib
模块。其中裸骨在2.7中可用。
import importlib
z = importlib.import_module("z", "x.y")
# equivalent to
from x.y import z
答案 1 :(得分:0)
相关说明from the docs(__import__
):
当name变量的形式为package.module时,通常会返回顶级包(直到第一个点的名称),而不是按名称命名的模块。但是,当给出非空的fromlist参数时,将返回按名称命名的模块。
因此,它类似于编写import x.y.z
,这也使x
可用(以及x.y
和x.y.z
)。