본문 바로가기
Python

[Python] Sys modules

by UnoCode 2020. 6. 25.

Python으로 개발을 해보시면 남의 모듈을 import 해서 사용하거나 pip명령어로 다운 받아서 사용하는 경우나 경험을 했을겁니다.

 

그렇다면 어떻게 import 하면 우리가 딱딱 원하는 모듈을 찾을까요..

 

Python이라는 놈은 순차 적으로 세구역에서 찾게 됩니다.

 

 

sys.modules =------------------> built-in modules =-------------------------> sys.path

 

1. sys.modules

 

Python이 페키지/모듈을 찾을때 제울 우선으로 찾는 구역입니다.

 

 

 

.출력 결과로 바서 딕셔너리 형태로 출력이 되는 것을 알 수 있습니다.

 

sys.modules는 이전에 한번 실행이 되었거나 기본적인 모듈 경로가 들어 있습니다.

 

2. built-in modules

 

위에 sys.modules를 print해보면 나오는 값중에 (built-in) 이라는 값이 있는데 이 값을 의미한다,

 

3. sys.path

 

Python이 모델/패키지를 찾을떄 마지막으로 찾는 구역입니다.

 

해당 구역은 pip로 새롭게 설치한 패키지도 이곳에 있습니다.

 

개발을 하면 모델/패키지를 직접 작업하는경우 이곳에 path를 등록 해서 찾게끔 할 수도 있습니다.

 

print를 해보면 해당 변수는 List로 구성이 되어 있어 쉽게 할당가 삭제가 가능합니다,

 

만약 3개의 구역에서 찾지못한다면 ModuleNotFoundError 에러가 뜹니다. ㅠㅠ

 

 

4. 최초의 SYS는 어떻게 찾을 수 있을까요?

 

 

>>> import sys
>>> print(sys.modlues)

위 명령어를 입혁하면 'sys': <module 'sys' (built-in)> 이러한 항목이 보이시나요?

 

네 sys 모듈은 built-in되어 있군요. (설치하자마자 설정값)

 

 

5. Absolure path and Relative path

my_app

|- pkg1

|    |-- __init__.py

|    |-- modules1.py

|    |-- modules2.py

|

|- pkg2

|    |-- __init__.py

|    |-- modules3.py

  |-- modules4.py

 

Absolute path(절대경로)

모듈 및 패키지의 시작부터 끝까지 생략 없이 명확히 명시된 경로를 뜻한다.

 

EX> C:/user/Game/lol.exe 

# my_app
from pkg1 import modules1
from pkg1.module2 import Hello
from pkg2 import module3 as Hello2

Relative path(상대경로)

EX> ../pkg1/modules1

# modules.4
from ..pkg1 import modules1
from ..pkg1.module2 import Hello
from . import module3 as Hello2

 

.. : 이전폴더

.  : 헌재폴더

 

상대경로랑 절대경로의 차이점은 

 

현 위치로 기준(상대경로)  

최초 위치 기준(절대경로) 이다.

 

참고 영상을 보면 좀더 쉽게 이해된다.

https://www.youtube.com/watch?v=Mjjj7aULE0A

 

댓글