这里所讲不是用import名令,而是讲用__import__函数。
如果我们有一个testa.py文件,我们可以用module=__import__('testa')来导入它。这样可以用module.属性来使用testa.py中的属性。如果我们有一个包,如:
在当前子目录下有一个名为:modules的目录,其中有__init__.py,testa.py两个文件。
因为在modules目录下有__init__.py文件,所以目录modules可以视为一个包,即将整个目录作为一个模块(象Java一样)。如果想导入testa.py,则可以使用import modules.testa.py
但如果使用__import__函数,情况有变化(可以参考文档中关于__import__的说明)。大概就是:使用__import__导入包形式的模块,如module=__import__('modules.testa'),此时返回的不是testa模块的对象,而是包的对象,所以想导入 testa可以使用文档中的方法:
def my_import(name):
mod = __import__(name)
components = name.split('.')
for comp in components[1:]:
mod = getattr(mod, comp)
return mod
(我只试验了一层,多层的并未测试,有兴趣的可以把结果告诉我)
(出处:http://www.sheup.com)