( 춤 안춥니다. )
( '못 알아먹겠으면 나가주세요~' 이 말입니다. )
대충 이런걸 설명하는 과제입니다.
- sys.modules 는 무엇인가
- sys.path 는 무엇인가
- 그 둘의 차이점은 무엇인가
- sys 모듈은 무엇인가
- sys 모듈은 어디에 있는가
- absolute path 는 무엇인가
- relative path 는 무엇인가
- 그 둘의 차이점은 무엇인가
sys 는 무엇이고,
. 은 무엇이고,
module 은 무엇일까요?
찾아보니까
python 이라는 언어프로그램에 포함된 하나의 모듈
이랍니다.
( 이건 제가 제대로 알고 있죠 ㅎ )
' . ' 은 연결자입니다.
연결해주는 친구라는겁니다.
위아래라고 하기에는 조금 이상할거같죠?
( 쓰고보니 말이 이상하네; )
구글에 찾아보니
본체에 대한 독립된 하위 단위
라고 하네요.
너무 어렵네요... ( 그렇쥬? )
그냥
어떤 프로그램의 구성요소인 작은 프로그램
정도로 이해해도 크게 문제가 되진 않을겁니다.
생각해보면 비슷한 말이잖아요?
파이썬의 특징 중에
" 다른 언어로 만든 프로그램을 파이썬 프로그램에 포함가능하다 "
라는 내용이 있는데요.
파이썬으로 만든 프로그램에서
그러한 기능 덕분에 생긴 특징입니다.
( 자세하게는 나중에 다룰 예정입니다. )
파이썬 프로그램에서 계속 쓸 수 있겠죠??
라고 해줄 수 있는 정보가 담기는 곳이 있다는건데...
( 이 친구는 복잡해보이겠지만, 사실 단순한 dictionary 랍니다! )
" sys " 라는 모듈과
" module " 이 연결되어있는 상태.
나머진 금방 이해하실겁니다.
앞부분은 이해했으니, path 만 알면 되겠죠?
( 참고로, path 는 ' 통로 ' 라는 뜻을 가진 단어입니다... )
아까 " module " 은 어떤기능의 내용을 알려주는 모듈이라고 했죠?
그렇다면,
파이썬이 계속해서 정보를 데려와주지 않을까요??
라고 해줄 수 있는 정보가 담기는 곳,
( 이 친구는 단순한 string 이 담긴 list 랍니다! )
1. sys.module 은 우리가 import 로 참조한 모듈이나 패키지의 정보 !
2. sys.path 은 그런 모듈이나 패키지들의 위치에 대한 경로 정보 !
' 어떤 내용인지와 어디에서 내용이 오는지 '
의 차이였습니다!
요부분은 저도...
sys 모듈은 내장모듈이기 때문에, 파일로 되어있지 않습니다.
C 언어로 프로그래밍되어, 파이썬에 내장되어 있습니다.
라는군요...
다른 모듈들이 sys 모듈에 포함되어 있듯이,
sys 모듈도 사실은 os 모듈안에 포함되어 있습니다.
" sys is os.sys " 라고 명령하면 True 를 반환합니다.
os.sys 는 built-in module ( 내장모듈 ) 입니다.
라는데요...
부족한 것 같아서 그냥, sys.path 를 import 한 뒤,
sys 를 찾아봤어요.
( 이 이상의 이해나 접근은... 아직 저에겐 이른것 같습니다... )
( 시무룩... )
absolute 는 ' 순수한, 전제의, 절대의 ' 라는 뜻을 가진 단어죠...
(
구글이 그랬어요)
path 는 아까 ' 통로 ' 라는 뜻을 가진 단어라고 했죠?
순수한 통로는... 이상하고,
전제의 통로는... 뭔말인지 모르겠고;
이거같군요...
아까 경로를 알려주는 것이 path 라는 모듈이였으니까,
이해되셨죠?
relative 는 ' 상대적인 ' 이라는 뜻을 가진 단어죠...
(
또, 구글이 그랬어요!!)
맞습니다.
여기서, 상대경로라는 것은
어떠한 것에 대해서 상대적인 경로를 나타내는 겁니다.
제가 있는곳이 " 춤추는나라 춤망도 춤추는시 망고면 " 이라면,
여러분이 어느곳에 있던,
저를 찾아오시기 위해선 " 무조건 " 저기로 찾아오시면 되잖아요?
( 제가 있는 위치의 주소가 "절대경로" )
만약에, 여러분이 " 춤추는나라 춤망도 마앙고시 맹고읍 " 에 계신다면,
저를 찾아오시기 위해선 같은 춤망도에서
춤추는시의, 망고면으로 오시면 되죠?
(역시! 비유맛집 춤추는망고!)
이렇게
긴 글 읽어주시느라 고생 많으셨습니다.
( 부록있습니당. 설명이 부족하다면, 참고하세욧! )
감사합니다 ( _ _)
└── pyango
├── test.py
├── testy.py
├── small_pypack
│ └── pengmod.py
└── big_pypack
├── pyangmod.py
└── not_big_pypack
└── yangmod.py
└── pyango
├── test.py ← 요기에서,
├── testy.py
├── small_pypack
│ └── pengmod.py
└── big_pypack
├── pyangmod.py
└── not_big_pypack
└── yangmod.py ← 요거를!
그러기 위해선, test.py 파일에
from big_pypack.not_big_pypack import yangmod.py
이렇게 공통의 최상위 폴더 ( pyango ) 를 생략한 뒤 경로를 지정해줘서,
절대적인 위치를 지정할 수 있는 방법이 절대경로입니다!
└── pyango
├── test.py
├── testy.py ← 요거를!
├── small_pypack
│ └── pengmod.py ← 요기에서,
└── big_pypack
├── pyangmod.py
└── not_big_pypack
└── yangmod.py
그러기 위해선, pengmod.py 파일에
import ..testy.py
이렇게 현재 디렉토리 ( pengmod.py 파일이 있는 small_pypack 폴더 )의
바로 상위 디렉토리로 가는 상대경로 호출자 " .. " 를 이용해서
상대적인 위치를 지정할 수 있는 방법이 상대경로입니다!