2012-02-03 22 views
8

私は長いモジュール名を持っていて、私はそれを何度も文書に入力する必要がないようにします。私は単にimport long_ass_module_name as lamnを実行し、それをそのように呼び出すことができます。しかし、このモジュールには、インポートして使用したいサブモジュールが多数あります。Python - モジュールのエイリアスを使用してそのサブモジュールをインポートするにはどうすればいいですか?

この場合、import lamn.sub_module_1を書き込むことはできません。なぜなら、pythonのインポートでは、私が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

vars()辞書を検索することにより、現在の名前空間の作品へのオブジェクトのすべてのメンバーをインポートするこの(非常にunrecommendable)方法:

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 
関連する問題