정의: 도트(.)을 사용하여 파이썬 모듈을 계층적으로 관리
예시: 모듈이름이 A.B라서 A는 패키지 이름, B는 A패키지의 B모듈
구조: 디렉토리와 파이썬 모듈
*game패키지
game/
__init__.py
sound/
__init__.py
echo.py
wav.py
graphic/
__init__.py
screen.py
render.py
play/
__init__.py
run.py
test.py
C:/doit/game/__init__.py
C:/doit/game/sound/__init__.py
C:/doit/game/sound/echo.py
C:/doit/game/graphic/__init__.py
C:/doit/game/graphic/render.py
각 디렉터리에 init.py파일 만든 후 내용 비우기
echo.py파일 만들기
def echo_test():
print("echo")
def render_test():
print("render")
set 명령어로 PYTHONPATH 환경 변수이용
C:/doit디렉터리 추가
파이썬 인터프리터 실행
C:\> set PYTHONPATH=C:/doit
C:\> python
하나를 실행한 후 다음 실행하기 위해선 인터프리터 종료 후 다시 실행(ctrl+z)
import할 때 가장 마지막 항목은 모듈 또는 패키지어야한다.
>>> import game.sound.echo
>>> game.sound.echo.echo_test()
echo
>>> from game.sound import echo
>>> echo.echo_test()
echo
>>> from game.sound.echo import echo_test
>>> echo_test()
echo
init.py: 해당 디렉터리가 패키지의 일부임을 알려주는 역할
모듈 정의 방식
# C:/doit/game/sound/__init__.py
__all__ = ['echo']
>>> from game.sound import *
>>> echo.echo_test()
echo
하나의 디렉토리 안에 있는 모듈이 다른 디렉토리의 모듈을 사용하는 법
from game.sound.echo import echo_test을 이용하여 문장을 추가하고 echo_test함수 사용하도록 수정
i) 일반적인 방식
from game.sound.echo import echo_test
def render_test():
print("render")
echo_test()
>>> from game.graphic.render import render_test
>>> render_test()
render
echo
ii) relative 방식
from ..sound.echo import echo_test
..: 부모 디렉터리 의미
. : 현재 디렉터리
from ..sound.echo import echo_test
def render_test():
print("render")
echo_test()