본문 바로가기
wecode/TIL 정리

위코드 Pre Course - 절대경로와 상대경로 (1)

by 왕거 2020. 7. 22.

주어진 Assignment 문제에 맞게 정리를 해보고 있다.

 

sys.modules와 sys.path의 차이점을 서술

  • sys.modules
    • 이미 로드되어있는 모듈에 이름을 매핑하는 딕셔너리
    • 강제로 다시 로드할 수 있도록 조작할 수 있다.
    • 딕셔너리형이라고 내부의 요소들을 마음대로 수정할 수는 없고, 필수적인 부분을 건들경우 파이썬 전체에 문제가 생길 수 있다.

print(sys.modules) 실행 결과

  • sys.path
    • 모듈의 검색 경로를 지정하는 문자열의 리스트
    • 환경변수와 설치시에 정한 기본값에 종속된다.
    • 자유롭게 내부 데이터를 수정할 수 있지만 자료형이 문자열 또는 바이트 데이터로 한정된다.

print(sys.path) 실행 결과

  • sys.path와 sys.modules의 차이점
    • sys.path는 print 결과가 보여주듯이 모듈이 위치한 경로를 가지고 있을 뿐이고 리스트형의 데이터이기 때문에 자유롭게 수정이 가능하고 수정의 결과가 프로그램에 영향을 미치지 않는다. 너무 많아지만 임포트 과정의 시간이 좀 늘어날 것 같긴하다.
    • sys.modules의 경우는 sys.path에 비해서 프로그램에 미치는 영향이 크다. 애초에 현재 프로그램에서 사용중인 또는 사용할 모듈들의 정보를 모아놓았기 때문에 내부의 정보는 파이썬 자체에 중대한 영향력을 가지고 있다. 수정이 가능하다곤 하지만 굳이 위험을 감수할 필요는 없어보인다.
    • modules는 이미 로드된 모듈들의 목록이라는 점과 path는 경로들의 목록이라는 점에서도 임포트되는 모듈을 찾을 때의 우선순위가 이미 로드가 되어있는 modules에서 우선적으로 찾아본 후에 마지막으로 path로 넘어가는 것이 확실히 더 효율적이고 이미 그렇게 동작하고 있다.

 

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

  • 제일 먼저 sys.modules, 그 다음으로 built-in modules, 마지막으로 sys.path를 참고하여 검색을 진행한다.

 

Absolute Path와 Relative Path의 차이

  • Absolute path
    • 절대경로를 사용할 때는 최상위 디렉토리부터 단계적으로 진행하며 목표한 파일을 지정하는 방식
    • 굉장히 안정적이라고 볼 수 있지만 상위 디렉토리에 변화가 생길 경우 이를 항상 반영해주어야 한다.
  • Relative path
    • 상대경로를 사용할 때는 특정 디렉토리를 기준으로 한 경로를 통해서 파일을 지정하는 방식
      • 보통 기준이 되는 디렉토리는 실행파일이 위치한 디렉토리가 기준이 되는 편
    • 기준이 되는 디렉토리가 어디냐에 따라서 지정이 까다로울 수 있으나 상위 디렉토리의 변화에 영향을 받지 않으며 파일 관리가 좀 더 용이하다.