2013-06-16 2 views
12

eval() 함수를 사용하여 모듈을 가져올 수 없습니다.모듈을 가져 오기위한 eval

그럼, 내가 할 경우 import vfs_tests as v 기능이 있습니다. 그러나 eval('import vfs_tests as v')과 같은 eval()을 사용한 동일한 가져 오기에서는 구문 오류가 발생합니다.

왜 이렇게됩니까?

답변

26

사용 exec는 :

exec 'import vfs_tests as v' 

eval 작품만을 표현에, import는 문입니다.

exec 파이썬 3에서 함수입니다 : exec('import vfs_tests as v')

importlib 모듈을 사용해야하는 문자열을 사용하여 모듈을 가져 오려면 : 파이썬 2.6에서

import importlib 
mod = importlib.import_module('vfs_tests') 

을 이전 __import__를 사용합니다.

+4

경고 단어 : exec는 매우 강력합니다. 실행중인 문자열의 일부가 신뢰할 수없는 출처에서 나온다면 exec도 매우 위험합니다. –

+0

py <= 2.6 인 경우 __import__를 사용하면 일반 가져 오기처럼 정의 된 가져온 이름이 그대로 유지되지 않습니다. – TextGeek

관련 문제