<jupyter_start><jupyter_text>패키지 패키지란 무엇인가?패키지(Packages)는 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. 예를 들어 모듈 이름이 A.B인 경우에 A는 패키지 이름이 되고 B는 A 패키지의 B모듈이 된다.  가상의 game 패키지 예  ![image.png](attachment:image.png)          간단한 파이썬 프로그램이 아니라면 이렇게 패키지 구조로 파이썬 프로그램을 만드는 것이 공동 작업이나 유지 보수 등 여러 면에서 유리하다. 또한 패키지 구조로 모듈을 만들면 다른 모듈과 이름이 겹치더라도 더 안전하게 사용할 수 있다.  __init__.py 의 용도![image.png](attachment:image.png)  relative 패키지- 만약 graphic 디렉터리의 render.py 모듈이 sound 디렉터리의 echo.py 모듈을 사용하고 싶다면 어떻게 해야 할까? 다음과 같이 render.py를 수정하면 가능하다. ![image.png](attachment:image.png)from game.sound.echo import echo_test 문장을 추가하여 echo_test 함수를 사용할 수 있도록 수정했다.<jupyter_code>from game.graphic.render import render_test
render_test()<jupyter_output>render
echo<jupyter_text>- 위 예제처럼 from game.sound.echo import echo_test를 입력해 전체 경로를 사용하여 import할 수도 있지만 다음과 같이 relative하게 import하는 것도 가능하다. ![image.png](attachment:image.png) from game.sound.echo import echo_test가   from ..sound.echo import echo_test로 변경되었다.  여기에서 ..은 부모 디렉터리를 의미한다. graphic과 sound 디렉터리는 동일한 깊이  (depth)이므로 부모 디렉터리(..)를 사용하여 위와 같은 import가 가능한 것이다.  relative한 접근자에는 다음과 같은 것이 있다.  '..' – 부모 디렉터리  ' . '– 현재 디렉터리  ..과 같은 relative한 접근자는 render.py처럼 모듈 안에서만 사용해야 한다.  !!!  파이썬 인터프리터에서 relative한 접근자를 사용하면 "SystemError: cannot perform relative import" 오류가 발생한다.<jupyter_code>from game.graphic.render import render_test
render_test()<jupyter_output>render
echo
{'fraction_non_alphanumeric': 0.08477011494252873, 'fraction_numerical': 0.0, 'mean_word_length': 4.1213235294117645, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '403957', 'license': 'MIT', 'n_tokens_mistral': 897, 'n_tokens_neox': 1113, 'n_words': 194, 'path': 'JumptoPython/Part_5_Python_Wing/05-3_Package.ipynb', 'repo_name': 'dongrami0425/Python_OpenCV-Study', 'size': '1392'}