sys.module/sys.path차이, sys

최대환·2021년 4월 20일
0

파이썬

목록 보기
12/16

파이썬이 모듈/패키지를 검색하는 순서

파이썬은 이렇게 3가지 장소를 순서대로 보면서 찾는다.
1. sys.modules
2. built-in modules
3. sys.path

sys.modules

  • 파이썬이 가장 먼저 확인하는곳
  • 이미 import된 모듈과 패키지를 저장하고 있음(새로 import하는 모듈은 찾을 수 없음)
  • dictionary형태로 되어있음

👉 예시

💻 python

import sys
print(sys.modules)

👀 결과

{'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': <module 'importlib._bootstrap_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'posix': <module 'posix' (built-in)>, '_thread': <module '_thread' (built-in)>, '_weakref': <module '_weakref' (built-in)>, 'time': <module 'time' (built-in)>, 'zipimport': <module 'zipimport' (frozen)>, '_codecs': <module '_codecs' (built-in)>, 'codecs': <module 'codecs' from '/usr/lib/python3.8/codecs.py'>, 'encodings.aliases': <module 'encodings.aliases' from '/usr/lib/python3.8/encodings/aliases.py'>, 'encodings': <module 'encodings' from '/usr/lib/python3.8/encodings/__init__.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from '/usr/lib/python3.8/encodings/utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' from 'main.py'>, 'encodings.latin_1': <module 'encodings.latin_1' from '/usr/lib/python3.8/encodings/latin_1.py'>, '_abc': <module '_abc' (built-in)>, 'abc': <module 'abc' from '/usr/lib/python3.8/abc.py'>, 'io': <module 'io' from '/usr/lib/python3.8/io.py'>, '_stat': <module '_stat' (built-in)>, 'stat': <module 'stat' from '/usr/lib/python3.8/stat.py'>, '_collections_abc': <module '_collections_abc' from '/usr/lib/python3.8/_collections_abc.py'>, 'genericpath': <module 'genericpath' from '/usr/lib/python3.8/genericpath.py'>, 'posixpath': <module 'posixpath' from '/usr/lib/python3.8/posixpath.py'>, 'os.path': <module 'posixpath' from '/usr/lib/python3.8/posixpath.py'>, 'os': <module 'os' from '/usr/lib/python3.8/os.py'>, '_sitebuiltins': <module '_sitebuiltins' from '/usr/lib/python3.8/_sitebuiltins.py'>, '_locale': <module '_locale' (built-in)>, '_bootlocale': <module '_bootlocale' from '/usr/lib/python3.8/_bootlocale.py'>, 'types': <module 'types' from '/usr/lib/python3.8/types.py'>, 'importlib._bootstrap': <module 'importlib._bootstrap' (frozen)>, 'importlib._bootstrap_external': <module 'importlib._bootstrap_external' (frozen)>, 'warnings': <module 'warnings' from '/usr/lib/python3.8/warnings.py'>, 'importlib': <module 'importlib' from '/usr/lib/python3.8/importlib/__init__.py'>, 'importlib.machinery': <module 'importlib.machinery' from '/usr/lib/python3.8/importlib/machinery.py'>, 'importlib.abc': <module 'importlib.abc' from '/usr/lib/python3.8/importlib/abc.py'>, '_operator': <module '_operator' (built-in)>, 'operator': <module 'operator' from '/usr/lib/python3.8/operator.py'>, 'keyword': <module 'keyword' from '/usr/lib/python3.8/keyword.py'>, '_heapq': <module '_heapq' (built-in)>, 'heapq': <module 'heapq' from '/usr/lib/python3.8/heapq.py'>, 'itertools': <module 'itertools' (built-in)>, 'reprlib': <module 'reprlib' from '/usr/lib/python3.8/reprlib.py'>, '_collections': <module '_collections' (built-in)>, 'collections': <module 'collections' from '/usr/lib/python3.8/collections/__init__.py'>, '_functools': <module '_functools' (built-in)>, 'functools': <module 'functools' from '/usr/lib/python3.8/functools.py'>, 'contextlib': <module 'contextlib' from '/usr/lib/python3.8/contextlib.py'>, 'importlib.util': <module 'importlib.util' from '/usr/lib/python3.8/importlib/util.py'>, 'google': <module 'google' (namespace)>, 'mpl_toolkits': <module 'mpl_toolkits' (namespace)>, 'ruamel': <module 'ruamel' (namespace)>, 'sitecustomize': <module 'sitecustomize' from '/usr/lib/python3.8/sitecustomize.py'>, 'site': <module 'site' from '/usr/lib/python3.8/site.py'>, 'readline': <module 'readline' from '/usr/lib/python3.8/lib-dynload/readline.cpython-38-x86_64-linux-gnu.so'>, 'enum': <module 'enum' from '/usr/lib/python3.8/enum.py'>, 'signal': <module 'signal' from '/usr/lib/python3.8/signal.py'>}
 

built-in modules

  • 파이썬에서 제공하는 공식 라이브러리
  • 내장 모듈은 c로 작성됨
  • 파이썬 인터프리터가 시작될 때 자동으로 로드되어 항상 사용이 가능

sys.path

  • 파이썬이 마지막으로 확인하는 곳
  • list형태이며 string요소로 경로를 저장
  • sys.path의 site-packages폴더에는 pip로 설치한 파이썬 패키지가 들어감
  • sys.path.append()를 이용해서 내가만든 모듈이나 패키지를 경로로 지정해줄 수 있음.

👉 예시

💻 python

import sys
print(sys.path)

👀 결과

['/home/runner/57-How-Import-Statement-Finds-Modules-and-Pac-choidaehwan9282', '/opt/virtualenvs/python3/lib/python3.8/site-packages', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload']

sys

sys

  • System-specific parameters and functions의 줄임말
  • 인터프리터에 의해서 사용되거나 관리되는 변수와 함수에 대한 접근을 항상 제공하는 모듈
  • sys를 출력해보면 built-in 모듈이라고 나와있음으로 바로 사용가능함.

👉 예시

💻 python

import sys
print(sys)

👀 결과

<module 'sys' (built-in)>

sys모듈위치 찾는법

  • sys.builtin_module_names를 하면 built-in된 모듈이름들을 찾아볼 수 있다.

👉 예시

💻 python

import sys
print(sys.builtin_module_names)

👀 결과

('_abc', '_ast', '_bisect', '_blake2', '_codecs', '_collections', '_csv', '_datetime', '_elementtree', '_functools', '_heapq', '_imp', '_io', '_locale', '_md5', '_operator', '_pickle', '_posixsubprocess', '_random', '_sha1', '_sha256', '_sha3', '_sha512', '_signal', '_socket', '_sre', '_stat', '_statistics', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'array', 'atexit', 'binascii', 'builtins', 'cmath', 'errno', 'faulthandler', 'fcntl', 'gc', 'grp', 'itertools', 'marshal', 'math', 'posix', 'pwd', 'pyexpat', 'select', 'spwd', 'sys', 'syslog', 'time', 'unicodedata', 'xxsubtype', 'zlib')
profile
나의 개발지식 output 공간

0개의 댓글