在做實驗性的玩具.遇上了這個問題.
英文好像是 Dynamic Import Module?.
不過加載是否成功.對應的位置很重要.
筆記一下
大約結構如下:
1 2 3
| app/socials/__init__.py app/socials/provider/__init__.py app/socials/provider/facebook.py
|
在 app/socials/init.py 內容為:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| def import_provider(name): module = __import__("provider.{0}".format(name), globals(), locals(), [str(name)]) return getattr(module, name.capitalize())
import_provider = lambda name: getattr(__import__("provider.{0}".format(name), globals(), locals(), [str(name)]), name.capitalize())
def import_provider(name): socials_root = dirname(abspath(__file__)) provider_root = join(socials_root, 'provider') provider_source = join(provider_root, name + '.py') provider_module = load_module( splitext(provider_source)[0].replace(sep, '.'), *find_module(name, [provider_root]) ) return getattr(provider_module, name.capitalize())
|