간단한 calculator 패키지를 만들어보자.
대략적인 경로는 이러하다.
main.py
add_and_multiply.py
multiplication.py
__init__.py 에는 아무것도 넣지 않았다.
이때 main.py를 실행하면
라는 오류가 나온다. 대략 해석해보면 알려진 상위 패키지 없이 상대 가져오기를 시도했다 입니다.
공식 페이지 에 의하면
라고 하며 대략 해석하면 상대적 가져 오기는 현재 모듈의 이름을 기반으로하고 주 모듈의 이름은 항상 "main"이므로 Python의 주 모듈로 사용하려는 모듈은 항상 절대 가져 오기를 사용해야합니다. 라고 한다. 때문에 main.py의 경로를 절대 경로로 바꿔주도록 하자.
결과는.
에러 없이 잘 실행되는 모습니다.
그렇다면 add_and_multiply.py 또한 잘 실행 될까?
또 에러가 났다. 대략 해석해보면 알려진 상위 패키지없이 상대 가져 오기를 시도했다고 한다. 상대경로를 절대경로로 바꿔보자.
다시 실행해보자.
아무것도 안뜨는걸보니 잘 실행되는거같다.
__init__.py
파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 __init__.py 파일이 없다면 패키지로 인식되지 않는다.
또한 from game import * 로 game에 있는 모듈을 호출할때 __init__.py 안에
__all__ 변수에 import할 수 있는 모듈을 정의해 주어야 모듈을 사용할 수 있습니다.