2012-03-02 2 views
1

는이 같은 폴더 구조가 있습니다명령 줄에서 가져온 다음 가져온 모듈을 반복하는 방법은 무엇입니까?

package_name/ 
|-- module1 
|-- module2 
|-- module3 

내가해야 할 것은 import package_name입니다, 그리고 그들에게 잇달아 코드를 실행, 각 모듈을 반복. 가져 오기는 명령 줄에서 제공되므로 미리 제어 할 수는 없습니다. 따라서 사용자가 run_script.py --modules='package_name.module1'이라고 말하거나 사용자가 간단히 말하면 run_script.py --modules='package_name 일 수 있습니다.

내가 할 수있는 from package_name import *, 그리고 내 __all__ 변수에 정의 된 모든 것을 가져올 것입니다 __init__.py,하지만 거기에서 나는 좀 이상합니다.

def import_by_path(path): 
    if '.' not in path: 
    return __import__(path, globals(), locals()) 

    path, module = path.rsplit('.', 1) 
    mod = __import__(path, globals(), locals(), [module]) 

    try: 
    return getattr(mod, module) 
    except AttributeError: 
    raise ImportError, "Could not import %s" % path 

사용과 같은 : 경로 모듈을 가져올 나는 보통이 같은 기능을 사용

for module in imported: 
    module.run() 

답변

1

:

내 다음 단계를 위해, 나는하기의 방법이 필요

mod = import_by_name("itertools") 

또는 귀하의 경우 :

for mod in map(import_by_name, imported): 
    mod.run() 
+0

나는 이것을 그대로 사용하지는 않았지만 내 자신의 기술을 분류하는 데 필요한 모든 방향을 제시했다. 고맙습니다! – mlissner

관련 문제