Python_sys module, path 정리

DonQ·2021년 1월 3일
0

TIL

목록 보기
15/31
post-thumbnail

Import Search 순서

1.sys.module
2.built-in modules
3.sys.path

sys.modules

첫번째로 살피는 영역으로 dictionary형태
한 번 이상 사용되었거나 이미 내장 되어 있는 module이나 패키지만 존재하므로 새롭게 import되는 것들은 없다.

built-in modules

파이썬에서 공식으로 제공하는 라이브러리.

sys.path

pip 로 새롭게 설치한 패키지도 이 곳을 통해 찾게 되며 새롭게 작성한 패키지나 모듈을 사용하고자 할 때 이 곳에 path를 등록 해서 찾게끔 설정해 준다. 해당 변수는 list 의 형태로 구성되어 있다.

위 3개의 구역에서 module이나 package를 찾지 못하게 되면 ModuleNotFoundError가 출력된다.

'sys': <module 'sys' (built-in)>
sys모듈은 이미 built-in 되어 있기 때문에 built-in module들이 있는 부분에서 찾게 된다.

Absolute Path & Relative Path

경로를 선언 시 'Absolute Path' 와 'Relative Path'가 있다.

Absolute Path

  • 최상위 디렉토리를 기점으로 module/package 까지의 경로이다.
    어디에서 쓰든 항상 같아서 사용하는데 헷갈리지 않다는 장점이 있다.

Relative Path

  • 최상위 경로가 아닌 현재 자기가 속한 경로를 기준으로 정의한다.

프로젝트 예제를 통해 path 설정 방법을 알아보자.

my_app
├── main.py
├── pkg1
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py
└──── pkg2
    ├── __init__.py
    ├── module3.py
    ├── module4.py
    ├── module5.py
    └── pkg4
        ├── __init__.py
        └── module6.py
#Absolute Path 예시
from pkg1.module1 import func2
from pkg2.module3 import func3
from pkg2.pkg4.module6 import func1
#Relative Path 예시 (현재 위치 : pkg2 module5.py)
from .module3 import func1
from ..pkg1.module1 import func1
from .pk4.module6 import func2

.은 현재 디렉토리를 지칭하며 ..은 상위디렉토리를 지칭한다.

Relative path
장점 : Absolute Path에 비해 간결
단점 : 프로젝트가 커질수록 혼동 가능성 있음, 파일 위치가 바뀌면 수정 필요

결론 : Absolute Path 사용을 추천

profile
꾸준히 쌓아가는 코딩 Study

0개의 댓글