45.6 연습문제: 하위 패키지 구성하기
다음 소스 코드를 완성하여 from database import * 형식으로 패키지를 사용할 수 있게 만드세요. 여기서는 database 패키지 안에 sqlite 패키지가 들어있습니다.
database/__init__.py
database/sqlite/__init__.py
# 내용이 비어 있음
database/sqlite/dbapi.py
def connect(database): print(database)
practice_package.py
from database import * connect(':memory:')
실행 결과
:memmory:
정답
from .sqlite.dbapi import *
해설
from database import *으로 패키지의 모든 변수, 함수, 클래스를 가져온 뒤 connect(':memory:')와 같이 패키지, 모듈 이름 없이 함수 그대로 사용하고 있습니다. 이렇게 동작하려면 패키지의 __init__.py 파일에서 from import로 함수를 가져와야 합니다.
여기서는 database 패키지 안에 sqlite 패키지가 들어있고, sqlite 패키지의 dbapi 모듈에 들어있는 connect 함수를 사용하고 있습니다. 따라서 database/__init__.py 파일에서는 from .sqlite.dbapi import *와 같이 현재 패키지(.)에서 하위 패키지 sqlite에 들어있는 dbapi 모듈의 모든 변수, 함수, 클래스를 가져오도록 만들면 됩니다.