[Python] 패키지

·2025년 6월 30일

Python

목록 보기
32/33

💡패키지란?

우리가 음악파일을 저장할 때도 장르별로 폴더를 만들어서 별도로 저장을 하듯이, 파이썬 모듈도 음악처럼 갯수가 많아지면 폴더(모듈 꾸러미)별로 별도로 관리를 해야 관리가 편해집니다. 이 폴더가 바로 '패키지'입니다.

패키지 vs 모듈

  • 패키지(Package): 폴더 (여러 모듈을 담는 컨테이너)
  • 모듈(Module): 폴더 안의 yu_auto.py 같은 파이썬 스크립트
📁 패키지 (폴더)
├── 📄 __init__.py
├── 📄 모듈1.py  
├── 📄 모듈2.py
└── 📄 모듈3.py

✔️ 파이썬 패키지를 만드는 단계

1단계: 패키지 폴더 생성

아래의 디렉토리에 my_loc 라는 폴더 생성

C:\Users\itwill
└── my_loc  (새로 생성할 폴더)

2단계: 모듈 파일 이동

my_loc 폴더 안에 yu_auto.py를 옮겨 놓음 (기존에 있던 yu_auto.py는 새 위치로 이동)

C:\Users\itwill\my_loc
└── yu_auto.py

3단계: init.py 파일 생성

이 평범한 폴더가 패키지로 인정을 받으려면
__init__.py 파일을 반드시 갖고 있어야 됨

C:\Users\itwill\my_loc
├── __init__.py   (필수 파일)
└── yu_auto.py
from my_loc import yu_auto  # from 패키지 import 모듈명
yu_auto.add_number(2,3)

# 평범한 폴더가 패키지가 되려면 그 폴더 안에 __init__.py 파일이 있어야 됨

init.py 파일 내용 예시

"""
my_loc 패키지 - 계산 기능을 제공하는 패키지

이 패키지는 다음 모듈을 포함합니다:
- yu_auto: 기본 계산 함수들
"""

# 패키지가 import될 때 실행되는 코드
print("my_loc 패키지가 로드되었습니다.")

# 패키지에서 바로 접근할 수 있는 함수들 정의
from .yu_auto import add_number, gob_number, devide

__version__ = "1.0.0"
__author__ = "Your Name"

4단계: 패키지 사용하기

새로운 Python 파일에서 아래와 같이 스크립트를 실행

from my_loc import yu_auto   # from 패키지 import 모듈

print(yu_auto.add_number(1, 2))    # yu_auto 모듈 안에 있는 add_number 함수 실행
print(yu_auto.gob_number(3, 4))    # 곱셈 함수 실행
print(yu_auto.devide(10, 2))       # 나눗셈 함수 실행

✔️ 파이썬 모듈 임포트 이해하기

이미 만들어져 있는 어떤 함수를 우리가 작성하는 코드에서 자유롭게 활용할 수 있으려면
해당 함수가 포함된 모듈임포트해야 함

임포트하는 방법

1. 기본 import

import 모듈이름
모듈이름.함수명()

2. 패키지에서 모듈 import

from 패키지 import 모듈이름
모듈이름.함수명()

3. 패키지.모듈 형태로 import

import 패키지이름.모듈이름
패키지이름.모듈이름.함수명()

💡site-packages란?

파이썬의 기본 라이브러리 패키지 외에 추가적인 패키지를 설치하는 디렉토리

site-packages의 특징

  • pip install 명령으로 설치한 패키지들이 저장되는 곳
  • 물리적인 장소에 구애받지 않고 모듈에 접근하여 반입할 수 있음
  • 시스템 전체에서 공통으로 사용할 수 있는 패키지들이 위치

현재 디렉토리 제약사항

아래의 명령어가 수행되려면:

from my_loc import yu_auto

실행하는 스크립트가 C:\Users\itwill 밑에 있어야 함.
왜냐하면 my_loc 폴더가 바로 C:\Users\itwill 밑에 있기 때문


✔️ 실습: 패키지를 site-packages에 설치하기

문제151. my_loc 폴더를 site-packages 폴더 밑에 두기

1단계: site-packages 경로 확인

import sys
import site
print(site.getsitepackages())

# 아래의 디렉토리에 모듈을 가져다 두면
# 어디에서든 무조건 import 할 수 있음

2단계: 패키지 폴더 이동

C:\Users\itwill\anaconda3\lib\site-packages\my_loc
├── __init__.py
└── yu_auto.py

3단계: 어디서든 패키지 사용 가능

이제 어떤 디렉토리에서든 다음 코드가 실행됨

from my_loc import yu_auto

print(yu_auto.add_number(1, 2))      # 3
print(yu_auto.gob_number(1, 2))      # 2
print(yu_auto.devide(10, 2))         # 5.0

핵심 정리

🎯 패키지의 핵심 개념

  • 조직화: 관련된 모듈들을 하나의 폴더에 그룹핑
  • 네임스페이스: 모듈명 충돌을 방지하고 계층적 구조 제공
  • 재사용성: 패키지 단위로 배포하고 설치 가능

📁 패키지 생성 필수 요소

  • 폴더 구조: 관련 모듈들을 담을 디렉토리
  • init.py: 패키지임을 알리는 필수 파일
  • 모듈 파일들: 실제 기능을 구현한 .py 파일들

🚀 실무 활용 팁

  • site-packages 활용: 전역에서 접근 가능한 패키지 만들기
  • 계층적 구조: 기능별로 하위 패키지 구성
  • 명확한 문서화: README.md와 docstring 활용
  • 버전 관리: version 속성으로 버전 정보 제공

⚠️ 주의사항

  • init.py는 필수: 없으면 패키지로 인식되지 않음
  • 순환 참조 방지: 패키지 간 상호 참조 주의
  • 경로 관리: sys.path와 PYTHONPATH 이해 필요

0개의 댓글