1.sys.module
2.built-in modules
3.sys.path
첫번째로 살피는 영역으로 dictionary형태
한 번 이상 사용되었거나 이미 내장 되어 있는 module이나 패키지만 존재하므로 새롭게 import되는 것들은 없다.
파이썬에서 공식으로 제공하는 라이브러리.
pip 로 새롭게 설치한 패키지도 이 곳을 통해 찾게 되며 새롭게 작성한 패키지나 모듈을 사용하고자 할 때 이 곳에 path를 등록 해서 찾게끔 설정해 준다. 해당 변수는 list 의 형태로 구성되어 있다.
위 3개의 구역에서 module이나 package를 찾지 못하게 되면 ModuleNotFoundError가 출력된다.
'sys': <module 'sys' (built-in)>
sys모듈은 이미 built-in 되어 있기 때문에 built-in module들이 있는 부분에서 찾게 된다.
경로를 선언 시 'Absolute Path' 와 '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에 비해 간결
단점 : 프로젝트가 커질수록 혼동 가능성 있음, 파일 위치가 바뀌면 수정 필요