일반적으로 python에서 모듈을 import할때 일반적으로 시작부분에 선언 후 코드를 작성한다.

그런데 모듈을 처음에 import하는게 아니라 상황에 맞게 동적으로 모듈을 import할 수 있다.


방법은 importlib 패키지를 사용하거나 __import__()함수를 사용하면 된다.

사실 둘의 차이는 별로 없다.

일단 importlib은 import구문(statement)을 수행하는 하나의 package일 뿐이며, __import__()함수는 import구문을 구성하는 expression이기 때문이다.

즉 __import__()함수는 importlib보다 low level로 호출하는 것 뿐이다.


importlib

import하고 싶은 module명을 module_name이라는 변수로 받았다고 하자.

이런 경우 importlib을 이용해 아래처럼 간단히 이용할 수 있다.

import importlib

def load_module_func(module_name):
	mod = importlib.import_module(module_name)
	return mod

mod란 변수를 통해 module 안에 class를 호출하는 것이 가능하다.


__import__()

importlib 보다 좀 더 low level 로 __import__ 를 이용해서도 구현이 가능하다. 물론 이걸 사용하면, importlib 패키지 자체를 import 하는 과정은 생략해도 된다. __import__() 는 built-in 함수이기 때문에 그냥 사용하면 된다. 


def load_module_func(module_name):
	mod = __import__('%s' %(module_name), fromlist=[module_name])
	return mod 
Ref. http://bluese05.tistory.com/31


'Language > python' 카테고리의 다른 글

python dictionary에서 한글 입력  (0) 2018.06.05
[python] z3 설치  (0) 2018.02.10
[python] 단순 치환암호 복호화하기  (0) 2017.11.18
[python] try, finally  (0) 2017.11.18
python 코드 잘 짜는 방법  (0) 2017.08.21

+ Recent posts