2009-10-11 2 views
2

동적으로 모듈 목록을 가져 오려고합니다. 이 일을하는 데 문제가 있습니다. 파이썬은 항상 ImportError을 외치며 제 모듈이 존재하지 않는다고 알려줍니다.Python3.0에서 모듈을 동적으로 임포트합니까?

먼저 나는과 같이, 모듈 파일 이름의 목록을 얻고 ".py" 접미사를 잘라 :

viable_plugins = filter(is_plugin, os.listdir(plugin_dir)) 
viable_plugins = map(lambda name: name[:-3], viable_plugins) 

그럼 난 플러그인 디렉토리에 os.chdirmap __import__ 전체 것, 그래서 같은 :

active_plugins = map(__import__, viable_plugins) 

그러나 active_plugins을 목록으로 만들고 그 안에있는 모듈에 액세스하려고 시도하면 Python은 모듈이 가져올 수 없으므로 모듈을 가져올 수 없다는 오류가 발생합니다.

내가 뭘 잘못하고 있니?


편집 : 단순히 os.chdir__import__(modulefilename) 내가 필요 정확히 무엇을 생산하고, 대화 형 인터프리터를 사용하여. 왜 위의 접근 방식이 작동하지 않는 것입니까? 파이썬의 이상으로 뭔가를하고 있습니까? 기능이입니다.

답변

7

모듈이있는 위치로 디렉토리를 변경하더라도 해당 디렉토리가 가져 오기 경로에 있지 않기 때문에 불가능하다고합니다.

모듈이있는 디렉토리로 변경하는 대신 수행해야 할 일은 해당 디렉토리를 sys.path에 삽입하는 것입니다.

import sys 
sys.path.insert(0, directory_of_modules) 
# do imports here. 
관련 문제