[Python] python은 어떻게 modules와 packages를 가져올까????

SangJin·2019년 12월 4일
0

python

목록 보기
3/5
import my_package

파이썬은 3가지의 장소를 순서대로 보면서 찾는다.
1. sys.modules

  1. built-in modules

  2. sys.path

sys.modules는 파이썬이 모듈이나 패키지를 가장먼저 확인 하는 장소이다.
sys.modules는 단순히 Dictionary로 되어있다. 그리고 import된 모듈과 패키지를 저장하고 있따.
만약 한번 저장된 모듈이나 패키지를 import 할 때다시 찾지 않아도 바로 있기 때문에 가져온다.
그러므로 새로 import하는 모듈은 sys.modules에서 찾을 수 없다.

built-in module

파이썬에서 제공하는 공식 라이브러리 이다. Built-in modules는 이미 파이썬에 포함되어 나오므로 파이썬이 쉽게 찾을수 있다.

sys.path

마지막으로 보는 장소는 sys.path이다. syspath는 기본적으로 list이며 string 요소 들을 가지고 있다.
각 요소들은 경로로 나타나있다.

['',
 '/Users/ttwkr/anaconda3/bin',
 '/Users/ttwkr/anaconda3/lib/python36.zip',
 '/Users/ttwkr/anaconda3/lib/python3.6',
 '/Users/ttwkr/anaconda3/lib/python3.6/lib-dynload',
 '/Users/ttwkr/anaconda3/lib/python3.6/site-packages',
 '/Users/ttwkr/anaconda3/lib/python3.6/site-packages/aeosa',
 '/Users/ttwkr/anaconda3/lib/python3.6/site-packages/IPython/extensions',
 '/Users/ttwkr/.ipython']

그래서 파이썬은 List 요소 하나하나 확인하면서 해당경로에 import하고자 하는 패키지가 있는지 확인한다.

sys.modules 와 sys.path의 차이점

sys.modules는 파이썬이 제일 먼저 확인하는 장소이며 Dictionary이고
sys.path는 파이썬이 제일 마지막에 확인하는 장소이고 List형 이다.

sys도 import해야하는데 어떻게 할까???

sys도 파이썬의 내장모듈이고 파이썬이 설치될때 내장모듈도 같이 설치되므로 기본적으로 path의 정보가 기본값으로 정해져 있다.

Absolute path와 relative path의 차이점

  • Absolute path
    Absolute path는 루트(/)를 기준으로 시작하여 경로가 표시된다.
    Absolute path는 루트(/)부터 시작하기때문에 폴더가 많다면 경로가 길어지는 단점이 있다.

  • relative path
    relative path는 import된 파일의 위치를 기준으로 경로가 표시된다.
    relative path는 파일의 위치를 기준으로 하기때문에 파일의 위치를 상세하게 알수가 없다. 그래서 파일 이 변경되어도 위치를 알수 없다는 단점이 있다.

profile
Developer

1개의 댓글

comment-user-thumbnail
2019년 12월 4일

파이썬 포스트 너무 잘 보고 있습니다!!
감사합니다~~!

답글 달기