2010-07-20 44 views
0

我在用下面的代码的麻烦:动态导入(点statments)

def get_module(mod_path): 
    mod_list = mod_path.split('.') 
    mod = __import__(mod_list.pop(0)) 

    while mod_list: 
     mod = getattr(mod, mod_list.pop(0)) 

    return mod 

当我做get_module('qmbpmn.common.db_parsers')我得到的错误信息: AttributeError: 'module' object has no attribute 'db_parsers'

但是:import qmbpmn.common.db_parsers工作得很好。

回答

3

当使用__import__导入子模块,你必须通过父包为fromlist参数:

1

__import__作品与虚线模块路径,所以这应该工作

def get_module(mod_path): 
    return __import__(mod_path) 

或者更简单地说

get_module = __import__ 

也许我误解了问题

导入包不自动进口所有的子模块进入它的命名空间。例如

import qmbpmn 

并不意味着

qmbpmn.common.db_parsers 

会自动解决