[Python] sys과 sys.module, sys.path (feat. 절대 경로와 상대 경로)

이태권 (Taekwon Lee)·2022년 5월 29일
0

[Python]

목록 보기
4/5

개념

sys과 sys.module, sys.path

modules/packages 찾는 순서

python 인터프리터는 아래와 같이 모듈의 저장 위치를 찾는다.

sys.modules → built-in modules → sys.path

sys

  • 파이썬의 인터프리터가 제공하는, 변수 및 함수를 직접 제어할 수 있게 하는 내장 모듈(built-in-module)이다.
  • sys 또한 파이썬에 포함되어 있어 import 해야 하는 모듈이다.
  • 이미 built-in 되어 있기에 built-in modules에서 찾을 수 있다
  • C언어로 작성 되어 있다.
import sys

sys.module

  • 파이썬 런타임 환경의 다양한 부분을 조작하는데 사용되는 다양한 기능과 변수를 제공한다.
  • 파이썬이 제일 먼저 모듈이나 패키치를 찾는 곳이다.
  • 단순한 형태의 dictionary 구조로 되어 있다.
  • 이미 import된 module 및 package를 저장하고 있다.

sys.path

  • 파이썬이 가장 마지막으로 보는 곳이다
  • 따라서 여기서도 찾지 못하면 ModuleNotFoundError라는 에러를 리턴한다.
  • list 구조이며, 쉽게 말해 string element들을 갖고 있는 list이다.

질문

Q1. sys.module과 sys.path의 차이점?

차이점sys.modulesys.path
모듈 위치 찾을 때제일 먼저 보는 곳가장 마지막으로 보는 곳
구조dictionary 구조 (key & value)list 구조 + string 요소

Q2. sys 모듈의 위치를 어떻게 찾을 수 있을까?

sys 모듈은 이미 파이썬에 내장 되어 있기에, sys.builtin_module_names를 출력하면 내당 모듈에 sys 모듈이 나온다

import sys
print(sys.builtin_module_names)

Q3. 절대 경로(absolute path)와 상대 경로(absolute path)의 차이는?

차이점절대 경로(absolute path)상대 경로(absolute path)
목적지까지 이르는 경로최상위부터 모두 표시현재(작업 중인 디렉토리) 위치
장점전체적인 경로를 빠르게 파악할 수 있다깔끔하다
단점하위 디렉토리가 많으면 경로의 길이가 너무 길어진다경로를 헷갈리기 쉽다

절대 경로

from package2.subpackage1.module5 import function2
# package2 디렉토리 → subpackage1 디렉토리
# → module5 모듈의 function2 함수를 import

상대 경로(.는 현재 위치를, ..는 상위 디렉토리를 의미)

from .subpackage1.module5 import function2 
# 현재 디렉토리의 하위 디렉토리 subpackage1
# → module5 모듈의 function2 함수를 import

참고자료

(파이썬 코딩도장) Unit 44. 모듈과 패키지 사용하기
(점프 투 파이썬) 05-6 라이브러리
(GeeksforGeeks) Python sys Module
(tistory, daco2020) sys.module 과 sys.path 의 차이점
(velog, byoungju1012) TIL 12. Python - sys 모듈과 path

profile
(Backend Dev.) One step at a time

0개의 댓글