Google App Engine(以下 GAE)でモジュールを動的にインポートするには、__import__関数を使えばいい。
# 動的にモジュールをインポートする def dynamic_import(name): mod = __import__(name, globals(), locals(), [], -1) components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod # subscription.config モジュールをインポート module = dynamic_import("subscription.config") # create 関数を取得 create = getattr(module, "create") # create 関数を使ってオブジェクト生成 obj = create()
動的にインポートする方法としては他に imp があるけど、こちらは GAE がサポートしていないため、使うと例外が発生する。
まぁ、モジュールを動的にインポートする場面なんて滅多に無いだろうけど、GAE 用に作った RSS フィードアグリゲーターで使うので、メモしておく。