파이썬 인터프리터가 제공하는 변수나 함수를 제어할 수 있는 방법을 제공한다.
module 이나 package를 import할 때 파이썬은
sys modules
, built-in modules
, sys.path
순으로 찾게 된다.
이미 import된 모듈과 package들을 저장하고 있는 Dictionary.
새롭게 import하는 모듈이나 package는 이 곳에서 찾을 수 없다.
파이썬에서 제공하는 파이썬 공식 라이브러리.
Built-in 모듈들은 이미 파이썬에 포함되어 나오므로 파이썬이 쉽게 찾을 수 있다.
sys.path는 기본적으로 list이며 각 string 요소들은 경로를 나타낸다.
파이썬은 list의 각 경로를 하나 하나 확인하면서 해당 경로에 import 하고자 하는 package가 위치해 있는지 확인한다.
sys
를 import한 후에 print(sys.builtin_module_names)
를 입력해보면 'sys'가 있는 것을 확인할 수 있다. 즉 sys모듈은 built-in modules
이다.
built-in모듈이나 pip를 이용하여 설치한 module과는 달리 직접 개발한 local package를 import 할때는 해당 package의 위치에 맞게 import 경로를 잘 선언해야 한다. 이 경로는 Absolute path와 Relative path로 나뉜다.
import를 하는 파일이나 경로에 상관없이 항상 경로가 동일하다
프로젝트의 최상단 디렉토리를 기준으로 경로를 잡는게 아니라 import 하는 위치를 기준으로 경로를 정의한다.
Note that relative imports are based on the name of the current module. Since the name of the main module is always "__main__", modules intended for use as the main module of a Python application must always use absolute imports.
Absolute path를 사용해야 한다.
__init__.py
파일의 역할__init__.py
가 존재하는 디렉토리는 패키지의 일부임을 알려주는 역할을 한다.
package 초기 설정을 할 수 있는 역할을 한다.
__init__.py
파일이 존재하지 않는다면 패키지의 일부인지 인식을 하지 못하기 때문에 속성을 가지고 있지 않는다는 에러가 발생하게 된다.
__init__.py
파일에 package 실행 시 설정해주고 싶은 초기 설정이 있다면 이 파일에 초기 설정에 관련된 코드들을 작성해준다. 그러면 작성 한 코드의 내용대로 package 실행 시 자동으로 실행된다.