2010-02-01 5 views

답변

4

이 당신이 원하는 것 같다 :

def import_path(name): 
    modname, _, attr = name.rpartition('.') 
    if not modname: 
     # name was just a single module name 
     return __import__(attr) 
    m = __import__(modname, fromlist=[attr]) 
    return getattr(m, attr) 

는 파이썬 2.5와 함께 작동하려면 이전, __import__ 키워드 인수를하지 않는 경우, 당신은 사용해야합니다 :

m = __import__(modname, {}, globals(), [attr]) 
+0

완료, 고맙습니다. –

0

def import_path(name): 
    (mod,mem) = name.rsplit('.',1) 
    m = __import__(mod, fromlist=[mem]) 
    return getattr(m, mem) 

작품을 시도해보십시오 작품 분명히 지금

>>> import_path('os.walk') 
<function walk at 0x7f23c24f8848> 

>>> import_path('os.path.join') 
<function join at 0x7f7fc7728a28> 
+0

것은 그것을 시도 'os.path.join'에 대해 알려 주시고 작동하는지 알려주십시오. :-) –

+0

우, __import__ 의미가 바보 같아요. –

+0

@sridhar 다행히도, 다행히도 쉽게 해결할 수 있습니다. 가장 최근의 편집을 참조하십시오. –

0

에 대한 최소한 :

>>> p = 'os.path.join' 
>>> a, b = p.rsplit('.', 1) 
>>> getattr(__import__(a, fromlist=True), b) 
<function join at 0x7f8799865230> 
+0

'fromlist' 매개 변수를 남용하지 않고 있습니까? –

+0

예, 있습니다 : –