Python sys Modules

이산·2022년 3월 10일
0

기술블로그

목록 보기
9/42
import a

위의 코드와 같이 우리가 필요한 모듈과 패키지를 받고자 할 때, 파이썬에서는 우리가 호출한 모듈과 패키지를 어떻게 찾는지에 대해서 알아보았다.

파이썬은 아래의 순서에 따라서 호출한 모듈 또는 패키지를 찾는다.

  1. sys.modules

  2. built-in modules

  3. sys.path

그 중에서 SYS 모듈에 대해서 알아보고자 한다.


sys(System-specific parameters and functions)

sys 모듈은 파이썬에서 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다. sys 모듈 또한 파이썬에 저장되어 있는 하나의 모듈이며 사용하려면 항상 아래의 코드처럼 불러와야 한다.

import sys

sys 모듈을 실행하면 다음과 같이 나온다.

import sys
>> print(sys.modlues)
{'sys': <module 'sys' (built-in)>, 'builtins': <module 'builtins' (built-in)>, '_frozen_importlib': <module 'importlib._bootstrap' (frozen)>, '_imp': <module '_imp' (built-in)>, '_thread': <module '_thread' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_weakref': <module '_weakref' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, '_frozen_importlib_external': <module 'importlib._bootstrap_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'posix': <module 'posix' (built-in)>, 'encodings': <module 'encodings' from  .... '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/rlcompleter.py'>, 'mod1': <module 'mod1' from '/Users/YB/Google 드라이브/TIL/Documents/Python/mod1.py'>}

sys.modules

파이썬이 사용자가 호출한 모듈 및 패키지를 가장 처음으로 찾아보는 곳이다. sys.modules은 단순한 딕셔너리 형태이며 이미 import된 함수나 모듈을 저장하는 공간으로 새롭게 import를 원하는 경우에는 이 모듈에서 찾을 수 없다. 한번 import된 모듈이나 패키지를 저장하며 파이썬이 해당 모듈 및 패키지를 다시 찾지 않도록 하는 기능이 있다.


sys.path

sys.path는 디렉토리에 경로들이 기록된 문자열 리스트이다. 사용자가 모듈 및 함수를 호출 할 경우 마지막으로 찾아보는 곳이다. 리스트에 들어있는 경로들을 탐색하며 리스트에 들어있는 맨 처음 경로부터 탐색을 시작한다. 특정 경로에서 불러올 파일을 찾았다면 남은 경로를 더 찾아보지 않고 탐색을 중지한다. sys.path에서도 모듈 및 함수를을 발견하지 못하면 ModuleNotFoundError 에러를 리턴한다.

import sys
sys.path.append("/opt")
import common

위의 코드를 살펴보면 sys.path.append("/opt")를 통해 /opt 디렉터리를 추가했고, 이로 인해 /opt/common.py를 import할 수 있게 된다.

profile
백엔드 개발자입니다.

0개의 댓글