관리 메뉴

정리왕

파이썬 패키지2 (__init__.py의 용도) 본문

6.개발/파이썬 공부하기

파이썬 패키지2 (__init__.py의 용도)

정리합니다 2020. 12. 1. 19:10
반응형

파이썬 패키지2 (__init__.py의 용도)

 

__init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다.

만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 __init__.py 파일이 없다면 패키지로 인식되지 않는다.

 

다음을 따라 해 보자.

>>> from game.sound import *
>>> echo.echo_test()
Traceback <most recent call last):
File"<stdin>", line 1, in <module>
NameError: name 'echo'is not defined

뭔가 이상하지 않은가?

분명 game.sound 패키지에서 모든 것(*)을 import하였으므로 echo모듈을 사용할 수 있어야 할 것 같은데

echo라는 이름이 정의되지 않았다는 이름 오류(NameError)가 발생했다.

 

이렇게 특정 디렉터리의 모듈을 *를 사용하여 import할 때에는 다음과 같이 해당 디렉터리의 __init__.py 파일에 __all__ 변수를 설정하고 import 할 수 있는 모듈을 정의해 주어야 한다.

# C:/doit/game/sound/__init__.py
__all__=['echo']

여기에서 __all__ 이 의미하는 것은 sound 디렉터리에서 * 기호를 사용하여 import할 경우 이곳에 정의된 echo 모듈만 import 된다는 의미이다.

 

 

 

반응형
Comments