점프투파이썬 참고
: 패키지는 도트(.)를 사용해 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다.
파이썬 패키지는 디렉터리와 파이썬 모듈로 이루어진다.

game, sound, graphic, play는 디렉터리 이름이고 확장자가 .py인 파일은 파이썬 모듈이다. game 디렉터리가 이 패키지의 루트 디렉터리이고 그 외는 서브 디렉터리이다.
간단한 파이썬 프로그램이 아니라면 이렇게 패키지 구조로 파이썬 프로그램을 만드는 것이 공동 작업이나 유지 보수 등 여러 면에서 유리하다. 또한 패키지 구조로 모듈을 만들면 다른 모듈과 이름이 겹치더라도 더 안전하게 사용할 수 있다.


패키지 안의 함수를 실행하는 방법은 3가지가 있다.


__init__.py에 정의한 것만 참조할 수 있다.
__init__.py파일은 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. 만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 이 파일이 없다면 패키지로 인식되지 않는다.
python3.3 버전부터는 이 파일이 없어도 패키지로 인식한다(PEP 420) 하지만 하위 버전 호환을 위해 이 파일을 항상 생성하는 것이 안전한 방법이다.
from game.sound.echo import *
echo.echo_test()
echo
오류가 발생한다. 이렇게 특정 디렉터리의 모듈을 를 사용해 import 하려면 해당 디렉터리의 __init__.py 파일에 __all__변수를 설정하고 import할 수 있는 모듈을 정의해 주어야한다.


여기에서 __all__이 의미하는 것은 sound 디렉터리에서 기호를 사용해 import할 경우 이곳에 정의된 echo 모듈만 import된다는 의미이다. 위의 from의 마지막 항목이 모듈인 경우는 __all__과 상관없이 무조건 import 된다.
__init__.py파일에 __all__변수를 설정할 경우오류가 나지 않는다.

from game.sound.echo import echo_test문장을 추가해 이제 echo_test함수를 사용할 수 있다.
from game.graphic.render import render_test
render_test()
>>render
>>echo
from game.sound.echo import echo_test를 입력해 전체 경로를 사용하여 import할 수도 있지만 다음과 같이 relative하게 import 하는 것도 가능하다...은 부모 디렉터리를 의미한다. graphic과 sound 디렉터리는 동일한 깊이(depth)이므로 부모 디렉터리(..)를 사용해 import가 가능하다... - 부모 디렉터리 : render.py처럼 모듈 안에서 사용해야한다.. - 현재 디렉터리