python
이 제일 먼저module
이나package
를 찾는 곳이며,dictionary
형태로 되어 있습니다.
- 한 번이라도
import
가 된 적이 있을 경우module
이나package
를 다시 찾지 않아도 됩니다.
python
이module
이나package
를 찾을 때 마지막으로 보는 곳이며,list
형태로string
요소들을 가지고 있는list
라고 생각하면 됩니다.
sys.path
에도 발견을 하지 못할 경우ModuleNotFoundError
에러를 발생시킵니다.
파이썬에 포함되어 있는 내장 모듈이고, 파이썬 설치 시 기본적으로 내장 모듈에 대한
path
정보가default
값으로 지정되어 있습니다.
- 절대 경로를 사용할 때는 최상단 디렉토리부터 단계적으로 진행하며 목표한 파일을 지정하는 방식으로 진행됩니다.
- 안정적이지만 최상위 루트부터 경로를 표시해야 해서 경로를 길게 표시해야 하는 단점이 있습니다.
- 상대 경로를 사용할 때는 특정 디렉토리를 기준으로 한 경로를 통해서 파일을 지정하는 방식으로 진행됩니다. ( 특정 디렉토리는 실행파일이 위치한 디렉토리가 기준 )
- 기준이 되는 디렉토리가 어디에 위치하냐에 따라서 지정이 까다로울 수 있지만 상위 디렉토리의 변화에 영향을 받지 않으며 관리가 좀 더 용이합니다.
- 반대로 파일의 위치가 변경되었을 때 찾을 수 없다는 단점을 가지고 있습니다.
main.py
에서 상대 경로로 add_and_multiply
를 임포트 했을 때 발생하는 에러[ 에러 발생 ]
from .calculator.add_and_multiply import add_and_multiply ImportError: attempted relative import with no known parent package
main module
에서는 패키지의 모듈을 import
하는 법
from .calculator.add_and_multiply import add_and_multiply
로 불러들였으나 선언되는 현재 파일의 위치와 동등한 위치에서 가져오는 것이 아니기 때문에 절대 경로로.
없이from calculator.add_and_multiply import add_and_multiply
로 가져와야 합니다
__init__.py
파일의 역할에 대해서
__init__.py
해당 디렉토리에 패키지가 있는 것을 알려주는 역할을 합니다.