TIL10. How Import Statement Finds Modules & Packages

박경철·2021년 5월 26일
0

TIL

목록 보기
10/19

1. Import Search 순서

Python에서 특정 Package를 사용하기 위해선 import해야 한다. Python 파일(모듈) 이거나 Python 파일들을 담고 있는 디렉토리(Package)를 찾기 위해서 다음 3가지 장소를 순서대로 찾습니다.

  • sys.modules
  • built-in modules
  • sys.path

2. sys.modulessys.path의 차이점

import sys

print(sys.modules)

for path in sys.path:
  print(path)

sys Module를 import하고 각각 Modules와 Path를 Print하면 다음과 같은 결과가 나온다.

module

{'sys': <module 'sys' (built-in)>, 'builtins': <module 'builtins' (built-in)>, '_frozen_importlib': <module 'importlib._bootstrap' (frozen)>, '_imp': <module '_imp' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_frozen_importlib_external':  ......(생략)
path

['/home/runner/01-Print-', '/opt/virtualenvs/python3/lib/python3.8/site-packages', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload']

Modules는 Dictionary 자료형이고 Path는 배열로 값들이 있습니다.

3. sys 모듈의 위치

'sys': <module 'sys' (built-in)>

sys 는 built-in modules로 sys.builtin_module_names를 출력해보면 sys는 인터프리터에 내장되있다는 것을 확인 할 수 있습니다.

('_abc', '_ast', '_codecs', '_collections', '_functools', '_imp', '_io', '_locale', '_operator', '_signal', '_sre', '_stat', '_string', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'atexit', 'builtins', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'posix', 'pwd', 'sys', 'time', 'xxsubtype')

4. 절대경로와 상대경로의 차이점

  • 절대경로는 고유 경로로 현재 파일의 위치와 상관없이 그 경로로 접근 가능하다. 하지만 절대경로는 현재 파일 위치를 기준으로 하기 때문에 현재 위치가 바뀌면 경로 위치도 변경된다.
profile
안녕하세요!

0개의 댓글

관련 채용 정보