【发布时间】:2013-03-05 02:13:27
【问题描述】:
我有这个文件结构(点是我的工作目录):
.
+-- testpack
+-- __init__.py
+-- testmod.py
如果我使用import 语句加载testmod 模块,我可以调用在其中声明的函数:
>>> import testpack.testmod
>>> testpack.testmod.testfun()
hello
但如果我尝试使用__import__() 函数做同样的事情,它就不起作用:
>>> __import__("testpack.testmod").testfun()
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
__import__("testpack.testmod").testfun()
AttributeError: 'module' object has no attribute 'testfun'
确实,它返回的是包testpack,而不是模块testmod:
>>> __import__("testpack.testmod").testmod.testfun()
hello
怎么会?
【问题讨论】:
-
这并不能回答您的问题,但请注意 Python 3.1+ 有更好的方法来进行动态导入:importlib。
-
@delnan:它在 2.7 中也可用。
标签: python module package python-import