본문 바로가기
파이썬

동적 임포트 import_module

by 발뛰 2023. 8. 3.

안녕하세요 오늘은 동적 임포트 import_module 에 대해서 알아보겠습니다!

 

패키지이름 importlib

함수이름 import_module 입니다.

동적 임포트란?

가끔 프로그램에서 다른 패키지(폴더)의 함수를 불러오고 싶을 때가 있습니다!

그럴 때 사용해주는 기능인데요!

 

원래는 from test.test import Test

Test().test() 

 

이렇게 써주면 되는데 왜 동적 임포트를 하냐구요?

보통 프로그램을 개발하다 보면 다양한 패키지들을 사용하게 되는데 그때마다 일일이 패키지 이름을 써줄 수 없습니다.

그래서 저렇게 import_module 함수를 통해 인자값만 넣으면 코드를 하나하나 쓰지 않아도 다양한 패키지를 호출할 수 있는거죠!(결국 귀찮아서 라는 얘깁니다. 그리고 파이썬 공식 문서에 보면 내장 import 보다 더 권장하고 있습니다. (__))

그럼 동적 임포트를 한번 해보겠습니다!

 

import_module은 importlib 라는 패키지를 사용합니다.

 

그럼 먼저 import importlib 를 해줘야겠죠?

import_module.py 라는 파일을 하나 만들어주고 다음과 같이 코딩합니다.

 

 

그리고 현재 있는 폴더(workspace)에서 test라는 폴더에 test.py라는 파일을 만들어서

Test라는 클래스 안에있는 test 함수를 끌어올것입니다!

 

 

test.py 파일에는 test라는 string을 return 하도록 되어있습니다!

 

이제 터미널에서 파일을 실행시키면

 

이렇게 실행이 됩니다!

 

또 함수를 짜서 여러가지의 패키지를 import 할 수 있겠죠!

 

이런식으로 패키지 이름을 리스트로 만들어서 함수를 돌리면 한번에 여러개의 패키지에 있는 함수를 실행할 수 있겠죠??

오버라이딩 한 함수들도 실행이 된다는게 큰 장점입니다!

 

예를들어, 같은 부모 패키지를 상속받은 자식패키지들이 있다면 똑같은 함수를 실행하는데 아주 편리하겠죠?

 

그럼 여기까지 동적임포트에 대해 알아봤습니다!

 

+추가로

이런 no module named 'test.test' 혹은 'test.test' is not a package 라는 오류가 뜬다면

 

 

이렇게 해당 폴더에 __init__.py 파일을 추가하면 패키지로 인식됩니다.

 

 

참고 : 

https://docs.python.org/ko/3/reference/import.html

 

댓글