[Python] Absolute Path 와 Relative Path 차이

난나다·2022년 6월 24일
0

Python 정리

목록 보기
6/10

직접 개발한 Local Package를 import 하는 경로에는 absolute path 와 relative path 가 있습니다.

Absolute path

import를 하는 파일이나 경로에 상관없이 항상 경로가 동일합니다.

예시

my_app 프로젝트는 package1package2 라는 2개의 package를 가지고 그중 package2subpackage2 라는 중첩 package를 가지고 있습니다.

Absolute path를 사용해 package1package2 를 import하면 다음과 같습니다.

from package1 import module1
from package1.module2 import function1
from package2 import class1
from package2.subpackage1.module5 import function2

경로의 시작점은 전부 my_app 프로젝트의 최상단 디렉토리에서 시작합니다.

예를 들어, subpackage1module5 모듈의 function2 함수를 import 한다면 다음의 경로를 거치게 됩니다.

my_app ⇒ package2 ⇒ subpackage1 ⇒ module5.py

리눅스
my_app/package2/subpackage/module5.py

윈도우
my_app\package2\subpackage1\module5.py

파이썬
my_app.package2.subpackage1.module5.py

from import 키워드를 사용하면
from package2.subpackage1.module5 import function2

일반적으로 local package를 import 할 때는 absolute path를 사용하면 됩니다.

Absolute path의 단점

경로가 길어집니다.

단점을 보완하기 위해 relative path 사용

Relative path

Absolute path 와 다르게 import 하는 위치를 기준으로 경로를 정의합니다.

일반적으로 relative path는 local package 안에서 다른 local package를 import 할 때 사용합니다.

예시

위의 my_app 프로젝트를 생각했을 때

예를 들어, package2module3에서 package2class1package2의 하위 package인 subpackage1module5function2 함수를 import 하려 한다면 다음과 같이 할 수 있습니다.

# package2/module3.py

from . import class1
from .subpackage1.module5 import function2

. 은 import가 선언되는 파일의 현재 위치를 의미한다.
.. 은 현재 위치에서 상위 디렉토리로 가는 경로입니다.

# subpackage1/module5.py
from ..module4 import class4

장점

선언해야하는 경로의 길이를 줄여줍니다.

단점

파일 위치가 변경되면 경로 위치도 변경되여야 합니다.

결론

웬만한 경우 absolute path 를 사용하는 것을 권장합니다.

0개의 댓글