#상대경로
# from .calculator import add_and_multiply
from calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1, 2))
main.py 에서 모듈을 참조할때 상대경로를 사용하면 오류가 발생한다. 공식문서를 참조해서 설명을 하자면 다른 모듈들이 '__main__' 모듈을 기준으로 설정해서 상대경로를 설정하기 때문이다.
from .multiplication import multiply
def add_and_multiply(a, b):
return multiply(a, b) + (a+b)
add_and_multiply.py 에서는 multiply 모듈을 참조해 값을 반환하는데 multiply 함수는 같은 디렉토리에 있는 multiplication.py 파일에 위치하고 있기때문에 ".multiplication" 써서 디렉토리를 참조해준 다음에 multiply 함수를 import 해준다.
패키지를 만들게 되면 모든 디렉토리마다 하나씩 가지고 있는 공통의 파이썬 파일이 있다. 내용은 없지만 아주 중요한 역할을 하는데 이 파일이 위치한 디렉토리는 패키지의 일부임을 알려주는 역할을 한다. 따라서 이 파일이 위치하지 않은 디렉토리는 패키지로 인식되지 않는다. 😱
🕹 하지만,python 3.3 부터는 디렉토리마다 __init__.py를 추가해주지 않아도 파이썬이 모듈로 인식하기때문에 꼭 써주지않아도 된다!