위와 같은 형태로 패키지를 직접 만들어 보고 나타나는 문제점들을 알아보겠습니다.
main.py
main.py를 상대 경로로 실행했을 때 위와 같은 오류가 발생합니다.
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.
파이썬 공식 문서에서는 메인 모듈일 경우는 import를 할 경우 절대 경로로 해야된다고 합니다.
상대 경로는 현재 모듈을 기반으로 하기 때문입니다.
위와 같이 절대 경로로 수정하여 사용하면 됩니다.
add_and_multiply.py의 코드를 상대 경로로 설정하고 실행했을 때 위와 같은 오류가 발생합니다.
맨 위의 이미지에서 보면 add_and_multiply.py와 multiplication.py는 같은 디렉토리에 위치해 있습니다.
따라서 from 다음에 있는 . 을 제거하고 from multiplication import multiply
로 사용해야 합니다.
이번에는 add_and_multiply.py의 코드를 절대 경로 설정하고 실행했을 때 위와 같은 오류가 발생합니다.
multiplication.py도 add_and_multiply.py와 같이 'calculator'라는 같은 디렉토리에 위치하고 있습니다.
절대 경로는 현재 디렉토리는 default 값으로 포함하게 됩니다.
그래서 from multiplication import multiply
로 사용해야 합니다.
__init__.py
맨 위의 이미지를 보면 __init__.py
라는 파일이 있는 것을 확인할 수 있습니다.
__init__.py
은 해당 파일이 존재하는 디렉터리는 패키지의 일부임을 알려주는 역할을 합니다.
위 파일이 없으면 디렉터리는 패키지로 인식되지 않습니다.