2012-02-03 53 views
8

我有一個很長的模塊名稱,我想避免在文檔中多次輸入它。我可以簡單地做import long_ass_module_name as lamn並且這樣稱呼它。但是,該模塊有許多我希望導入和使用的子模塊。Python - 如何使用模塊的別名來導入其子模塊?

在這種情況下,我將無法編寫import lamn.sub_module_1,因爲python import無法識別我爲我的long_ass_module_name所做的別名。我怎樣才能做到這一點?

我應該自動導入我主模塊的__init__.py中的所有子模塊嗎?

回答

11

當您導入子模塊的別名對象仍然改變,

import my_long_module_name as mlmn 
import my_long_module_name.submodule 

mlmn.submodule.function() 

import聲明始終把模塊的全名。該模塊只是一個對象,導入一個子模塊會爲該對象添加一個屬性。

1

導入對象的所有成員當前命名空間的這(高unrecommendable)的工作方式通過查找vars()詞典:

import my_bad_ass_long_module.bafd as b 

# get __dict__ of current namespace 
myn = vars() 
for k,v in vars(b).items(): 
    # populate this namespace with the all the members of the b namespace (overwriting!) 
    myn[k] = v