2010-07-20 53 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 

會自動解決