티스토리 뷰

반응형

파이썬(Python)에서는 복잡한 프로그램(소스코드)을 모듈(Modules)로 나누어 관리하는데, 이런한 모듈은 또 패키지(Packages)로 묶어서 관리할 수 있습니다. 패키지란 모듈을 디렉토리(폴더)로 구분하여 관리하는 것을 말합니다.


파이썬 패키지 (Python Packages) 디렉토리 구조

파이썬 패키지 트리 구조

파이썬 패키지는 디렉토리(폴더) 구조로 되어있다.

위 트리 구조를 보면 animal 패키지 안에 cat, dog, rabbit 패키지가 들어있고 그 속에 eat, move, sound 모듈이 각각 포함되어 있는 것을 볼 수 있다.

__init__.py 파일은 패키지를 초기화하는 역할을 한다.

특별한 일이 없다면 Python 3.3 이후의 버전에서는 __init__.py를 생략할 수 있다. 하지만 하위 버전의 호환성을 위해 __init__.py 파일을 남겨두는 것이 좋다. (내용이 없어도 됨)

패키지로 모듈을 디렉토리로 구분하게 되면 모듈 이름이 동일한 문제를 해결할 수 있다.


파이썬 패키지 모듈 만들기

패키지 내부에 있는 모듈은 일반 모듈과 동일하다.

모듈 내부에는 클래스, 함수, 변수 등이 올 수 있다.

파이썬 모듈 사용법 & 모듈 만들기 (Python Module)


파이썬 패키지 사용법

파이썬 패키지 모듈 사용법

import animal.rabbit.eat

animal.rabbit.eat.eat_food()


from animal.rabbit import eat

eat.eat_food()


from animal.rabbit.eat import eat_food

eat_food()


다양한 방식으로 패키지 모듈을 사용할 수 있다.

모듈을 불러오는 임포트(import)하는 방식이 단순할수록 사용방식이 복잡해지는 것을 볼 수 있다.

편의성을 생각하면 아래의 방식이, 이름 충돌 문제를 생각하면 맨 위 방식이 좋다.


파이썬 패키지 __init__.py 파일 활용

파이썬 패키지 __init__.py

from animal.rabbit import *

위 방식으로 디렉토리에 있는 모든 모듈을 포함시키기 위해서는 __init__.py 파일을 수정해야 한다.

* 기호로 포함시킬 모듈을 __all__ 변수로 지정한다.


import animal 또는 from animal import * 같은 방식으로 패키지 속 모듈을 전부 포함시키고 싶은 생각이 들지만 아쉽게도 이런 방식은 불가능한 방식입니다. 참고하세요.



반응형
댓글