Python/파이썬 기초

파이썬에서 다른 폴더 내 py 파일을 import하는 방법 정리

jimmy_AI 2023. 10. 16. 23:16
반응형

Python에서 다른 폴더 내의 py 파일을 모듈로 임포트해야 하는 경우가 있습니다.

이 경우 다른 디렉토리에 속한 py 파일의 함수들을 가져오는 방법을

몇 가지 케이스로 나누어 정리해보도록 하겠습니다.

 

그 전에, py 파일 import에 관한 기본적인 내용에 대한 정리가 먼저 필요하시다면,

아래 글도 같이 참고해보세요.

 

py 파일 import 방법, if __name__ == '__main__' 의미, Colab에서 py 파일 가져오기

py 파일 import 다른 py 파일 내에 작성된 함수나 클래스를 가져오고 싶은 경우가 있을 것입니다. 또한, 작성된 코드에서 if __name__ == '__main__' 이라는 부분을 많이 보셨을 수 있는데요. 이번 글에서는

jimmy-ai.tistory.com

 

여기서는 예시로, 다음과 같이 main.py에서 utils 폴더 내에 있는 util1.py, util2.py 내의

함수들을 임포트하여 가져와보도록 하겠습니다.

 

util1.py

# util1.py
def fn1():
    return 1

def fn2():
    return 2

 

util2.py

# util2.py
def fn3():
    return 3

def fn4():
    return 4

 

 

방법 1: from 폴더명.모듈명 import 함수명

첫 번째로, from utils.util1과 같은 형태로 폴더 내에서 모듈을 호출하는 방식으로

함수들을 불러올 수 있습니다.

이와 같은 양식으로 import하는 경우,

특정 함수만 가져와 함수명만으로 바로 사용하는 것이 가능합니다.

다음 예시는 util1.py와 util2.py 내의 함수들을 불러와 사용하는 예시 코드입니다.

from utils.util1 import fn1, fn2
from utils.util2 import fn3, fn4

a = fn1()
b = fn2()
c = fn3()
d = fn4()

print(a, b, c, d) # 1 2 3 4

 

반응형

 

방법 2: from 폴더명 import 모듈명

이번에는 디렉토리 내에서 특정 py 파일 전체를 모듈로 import하는 형태입니다.
이 방법에서는 함수 호출 시에 util1.fn1처럼 모듈명.함수명 형태로 사용하게 됩니다.

다음 예시 코드는 해당 방식으로 두 py 파일 내 함수들을 가져와 사용하는 예제입니다.

from utils import util1, util2

a = util1.fn1()
b = util1.fn2()
c = util2.fn3()
d = util2.fn4()

print(a, b, c, d) # 1 2 3 4

 

 

방법 3: import 폴더명.모듈명

폴더와 모듈 이름을 모두 포함하여 불러와 모듈 내의 소모듈 형태로 사용하는 방식도 가능합니다.
이때는 utils.util1.fn1과 같이 폴더명.모듈명.함수명 형태로 함수를 사용해야 하며,
폴더 내에 폴더가 여러 번 중첩된 경우에도 유사한 원리로 import를 해주시면 됩니다.


다음은 위 예제에서의 fn1 ~ fn4 함수를 해당 형태로 불러와 사용해보는 예제 코드입니다.

import utils.util1
import utils.util2

a = utils.util1.fn1()
b = utils.util1.fn2()
c = utils.util2.fn3()
d = utils.util2.fn4()

print(a, b, c, d) # 1 2 3 4

 

여기서 주의할 점은 import utils만 하여 사용하는 형태로는

바로 사용이 불가능하다는 점입니다.

 

참고로, __init__.py 및 __main__.py를 이용하여 패키지 형태로 지정하여 사용하는 방식을

적용하면 py 파일 임포트 구조 지정에 있어서 더 편리한데, 이 내용은 다음에 기회가 되면

포스팅을 진행해보도록 하겠습니다. 감사합니다.