python : module & package(import search)

hyo_·2021년 5월 17일
0

python

목록 보기
3/5

module & package import search 순서는??

1. sys.modules

  • 파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하는 곳
  • 단순한 dictionary
  • 이미 import된 모듈과 package들을 저장
    ➡️ 한번 import된 module과 package들을 다시 찾지 않아도 되게 해준다.

2. built-in modules

  • 파이썬에서 제공하는 파이썬 공식 라이브러리들(파이썬에 포함되어 나와 쉽게 찾을 수 있다.)

3. sys.path

  • 마지막으로 확인하는 장소
  • 기본적으로 list이며 string 형식으로 요소들이 저장

궁금증 해결하기!

1. sys.modules 와 sys.path의 차이점

sys.modules는 dictionary형이고 sys.path는 list 형식이다.

  • sys.modules - 이미 Import된 모듈,패키지들은 key값으로 찾아질 수 있다.
  • sys.path

2. sys 도 import 해야하는 모듈이다. 파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까?

sys 모듈은 파이썬에 포함되어 있는 모듈이기 때문에 built-in module에서 찾을 수 있다.

Absolute path와 relative path의 차이점

Absolute path

import 하는 파이썬 파일의 현재 경로에 상관없이 항상 경로가 동일

relative path

import 하는 파이썬 파일의 현재 경로에 상대적으로 경로가 정해짐

calculator 패키지 만들기


위의 구조로 파일, directory 생성
main.py에서 상대경로로 add_and_mutiply 를 임포트 했을 때 에러 발생

3. main module 에서는 패키지의 모듈을 어떻게 임포트 해야할까?

어떤 스크립트 파일이든 파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __name__에는 '__main__'이 들어가기 때문에, main module에서는 상대경로가 아닌 절대경로를 사용해야한다.

4. add_and_multiply.py에서 multiply함수를 절대경로와 상대경로도 각각 임포트 해보고 main 모듈과 차이점을 생각해보자.

add_and_multiply.py와 multiply 함수는 같은 package 내에 있기 때문에, 상대경로와 절대경로 둘 다 사용하여 import 가능하다.

5. init.py 파일의 역할

directory에 __init__.py이 있을 경우 package로 인식한다.

특정 directory 안의 모듈들을 *를 사용하여 import 할 경우, init.py 파일에 all 변수를 설정하고 import할 수 있는 모듈을 정의해 주어야 한다.

profile
🎓의지적인 삶을 살자!😊

0개의 댓글