Python에서 특정 Package를 사용하기 위해선 import해야 한다. Python 파일(모듈) 이거나 Python 파일들을 담고 있는 디렉토리(Package)를 찾기 위해서 다음 3가지 장소를 순서대로 찾습니다.
- sys.modules
- built-in modules
- sys.path
sys.modules
와 sys.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는 배열로 값들이 있습니다.
'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')
- 절대경로는 고유 경로로 현재 파일의 위치와 상관없이 그 경로로 접근 가능하다. 하지만 절대경로는 현재 파일 위치를 기준으로 하기 때문에 현재 위치가 바뀌면 경로 위치도 변경된다.