일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 오블완
- LIST
- 싸피
- Web
- 코딩
- loaddata
- 프리워커스
- 파라미터
- CSS #HTML #코드
- vscode설치
- listdir
- 역사
- Coding
- CSS
- HTML
- dangerouslySetInnerHTML
- 티스토리챌린지
- 파이썬
- 위코드
- SSAFY
- phython
- dumpdata
- wecode
- 프로그래밍폰트
- Python
- VSCode
- django
- comprehension
- TIL #todayilearn #math #javascript #js #자바스크립트 #절댓값 #최댓값 #랜덤 #random #floor
- html #css #코딩 #입문 #코딩시작하기 #코딩입문 #파이썬 #자바스크립트 #비전공자 #비전공 #코딩학원
- Today
- Total
당신의 친절한 이웃, 코딩맨
#16 Python module 과 package를 python은 어떻게 찾을까? 본문
1. sys.modules와 sys.path의 차이점
sys는 파이썬에 포함되어있는 모듈이다.
sys.modules와 sys.path를 출력할 수도 있고, 수정 가능하다.
import sys
print(sys.path)
print(sys.modules)
sys.modules
파이썬이 모듈이나 package를 찾기 위해 가장 먼저 확인하는 곳인데, sys.modules는 단순한 dictionary이다.
그리고 이미 import 된 모듈과 package들을 저장하고 있다.
즉, 한번 import된 모듈과 package들은 파이썬이 또다시 찾지 않아도 되도록 하는 기능을 가지고 있다.
그러므로 새로 import 하는 모듈은 sys.modules 에서 찾을 수 없다.
sys.path
파이썬은 module과 package를 찾는 순서가 있는데,
1. sys.module을 보고,
2. built-in modules를 찾아본 다음에,
3. sys.path를 본다
4. sys.path에서도 못 찾으면ModuleNotFoundError 에러를 리턴하게 된다
마지막으로 보는 장소인 sys.path느 기본적으로 list로 되어있고, string요소들을 가지고 있다.
2. sys 모듈의 위치를 어떻게 찾을 수 있을까?
sys.modules는 파이썬이 module과 package를 찾기 위해 가장 먼저 둘러보는 곳이다.
sys.module은 이미 built-in 되어 있기 때문에, built-in module들이 잇는 부분에서 찾게 된다.
※ 여기서 built-in module은 파이썬에 기본적으로 내장돼있는 모듈이다.
'sys': <module 'sys' (built-in)>
3. Absolute path와 relative path의 차이점
Absolute path
모듈 빛 패키지의 시작부터 끝까지 생략이나 축약되지 않고 명확히 명시된 경로를 뜻한다.
사용할 때 정확히 경로를 지정해놓고 사용하기 때문에, 혼동되지 않는 장점이 있다.
pkg라는 폴더에 mod1의 func1 모듈을 불러올 때:
from pkg.mod1 import func1
#혹은
import pkg.mod1.func1
Relative path
relative path는 자기가 속한 경로를 기준으로 상위 폴더는 '..'으로 이동하는 개념이고
'.'은 현재 속해있는 디렉터리를 고를 때 사용된다.
from ..mod2 import func2
from . import module2
from .pkg2.module2 import func2
#한 폴더씩 이동하고 그 폴더의 현 디렉토리 py파일 즉, 모듈을 가져오는 방식; relative path
'Today I Learn (TIL)' 카테고리의 다른 글
#18 Python list comprehension, dictionary comprehension (0) | 2020.06.29 |
---|---|
#17 Python module과 package 이용 예제, 오류 대처 방안 (0) | 2020.06.28 |
# 15 Python 위치 인수(positional arguments)와 가변 인수(variable argumetns)의 오류들 (2) | 2020.06.24 |
# 14 Python - Function Parameters(함수의 파라미터), optional parameter (옵셔널 파라미터) (0) | 2020.06.24 |
#13 CSS의 정의와 역할 (0) | 2020.06.23 |