파이썬은
- sys.modules
- bulit-in modules
- sys.path
의 순서로 module/package를 찾습니다.
그렇다면 sys.modules
와 sys.path
의 차이가 무엇인지 알아보겠습니다.
sys.modules
- 파이썬이 제일 먼저 모듈이나 패키지를 찾는 곳입니다.
- 단순한 dictionary 구조입니다.
- 이미 import 모듈과 package들을 저장합니다.
sys.path
- 파이썬이 마지막으로 모듈과 패키지를 찾는 곳입니다.
- list 구조로 string 요소들을 가지고 있습니다.
- 각 string 요소는 경로를 나타내고 파이썬은 list의 각 경로를 하나하나 확인하면서 해당 경로에 import 하고자 하는 package가 위치해 있는지 확인합니다.
차이
import의 유무입니다.
sys.modules
는 이미 import한 모듈과 패키지를 저장하고 sys.path
는 아직 import 하지 않은 모듈과 패키지들의 경로를 저장합니다.
참고
https://velog.io/@sji7532/Python-sys-%EA%B7%B8%EB%A6%AC%EA%B3%A0-sys.module%EA%B3%BC-sys.path-%EC%B0%A8%EC%9D%B4