Python Modules

Pang·2021년 9월 11일
0
post-thumbnail

sys.modules 와 sys.path의 차이점.

sys.modules 와 sys.path의 차이점을 알려면
각각 무슨 의미를 가지고 있는지 알아야한다.

※우선 import search 순서는

sys.modules -> built-in modules -> sys.path

순으로 파일을 서치한다.

sys.modules와 sys.path의 개념

  • 1.sys.modules
    +파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하는 곳이다.
    +sys.modules은 단순한 dictionary형태로 되어있다.
    +이미 import된 모듈과 package를 저장하고 있다.
    +import가 되어있는 모듈과 패키지의 경로가 저장되어 있어 다시 찾지 않아도 된다.
  • 2.sys.path
    +먼저 module찾고 그다음 package를 찾고 마지막으로 sys.path를 찾는다.
    +sys.path는 기본적으로 list이며 str 요소들을 가지고 있다
    +sys.path에서도 module을 발견하지 못하면 ModuleNotFoundError 에러를 리턴한다.

sys 도 import 해야하는 모듈입니다.

파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까요?

  • 파이썬에 포함되어 있는 내장 모듈이고 파이썬 설치시 기본적으로 내장 모듈에 대한 path정보가 default 값으로 지정되어있다.
  • Sys 모듈도 python에 내장된 built-in 모듈중 하나이므로 경로 검색순서에 따라 쉽게 찾을 수 있다.

즉 sys도 외부에서 가져와야 하는 값이지만 이미 파이썬에
기본적으로 있으므로 위의 import search순서를 지켜서 위치를 찾는 것이다.

Absolute path와 relative path의 차이점을 서술해 주세요.

  • Absolute path
    - 최상단 디렉토리를 기준으로 path 설정한다.
    - 최상단부터 경로를 표시하기 때문에 경로를 길게 표시해야해서 가독성이 좋지 않다.
  • Relative path
    - 실행파일이 위치한 디렉토리를 기준으로 path를 설정한다.
    - 경로의 길이를 줄여주지만 헷갈리기 쉽다.
    - 파일의 위치가 변경되면 경로 위치도 변경해야한다.
    - absolute path를 사용하는 걸 더 권장한다.

init.py 파일의 역할

init.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 init.py 파일이 없다면 패키지로 인식되지 않는다.

※ python3.3 버전부터는 init.py 파일이 없어도 패키지로 인식한다(PEP 420). 하지만 하위 버전 호환을 위해 init.py 파일을 생성하는 것이 안전한 방법이다.

출처
https://wikidocs.net/1418

profile
팡 화이토

0개의 댓글