-패키지와 라이브러리의 차이가 뭐야?
좋은 질문이에요! 사실 개념적으로는 비슷하지만 미묘한 차이가 있어요.
기술적 정의:
패키지 (Package)
# 폴더 구조가 있는 코드 모음
my_package/
├── __init__.py ← 이게 있으면 패키지!
├── module1.py
├── module2.py
└── subpackage/
├── __init__.py
└── utils.py
# 사용법
import my_package
from my_package import module1
from my_package.subpackage import utils
라이브러리 (Library)
# 여러 패키지와 모듈의 집합
pandas_library/
├── pandas/ ← 메인 패키지
├── tests/ ← 테스트 패키지
├── docs/ ← 문서
└── setup.py ← 설치 파일
실생활 비유:
패키지 = 책 한 권 📖
Django 패키지 = Django라는 한 권의 책
├── 1장: 모델 (models.py)
├── 2장: 뷰 (views.py)
├── 3장: URL (urls.py)
└── 부록: 유틸리티 (utils.py)
라이브러리 = 도서관 전체 📚
SciPy 라이브러리 = 과학 계산 도서관
├── NumPy 책 (수치 계산)
├── Pandas 책 (데이터 분석)
├── Matplotlib 책 (그래프)
└── Jupyter 책 (노트북)
실제 예시:
패키지들:
pip install requests # requests 패키지
pip install django # django 패키지
pip install flask # flask 패키지
라이브러리들:
pip install scipy # 여러 과학 계산 패키지들
pip install tensorflow # AI/ML 관련 여러 패키지들
pip install anaconda # 데이터 사이언스 패키지 모음
Python에서의 실제 차이:
패키지 만들기:
# mypackage/__init__.py
def hello():
return "Hello from package!"
# mypackage/utils.py
def calculate(x, y):
return x + y
# 사용
import mypackage
mypackage.hello()
라이브러리 만들기:
# 여러 패키지를 포함하는 큰 프로젝트
mylibrary/
├── core/ ← 핵심 패키지
│ ├── __init__.py
│ └── engine.py
├── utils/ ← 유틸리티 패키지
│ ├── __init__.py
│ └── helpers.py
├── tests/ ← 테스트 패키지
└── docs/ ← 문서
일상적 사용에서:
사람들이 보통 혼용해서 써요:
"requests 패키지 설치해" ✅
"requests 라이브러리 설치해" ✅
# 둘 다 같은 의미로 통함
하지만 정확히는:
- "requests 패키지" ← 더 정확
- "SciPy 라이브러리" ← 더 정확 (여러 패키지 포함)
PyPI에서 보면:
단일 기능:
requests (패키지)
flask (패키지)
beautifulsoup4 (패키지)
종합 세트:
tensorflow (라이브러리 - AI/ML 도구 모음)
scipy (라이브러리 - 과학 계산 도구 모음)
django (경계선 - 웹 프레임워크이지만 크고 복잡함)
요약:
패키지 라이브러리
크기 | 보통 작음 | 크고 복잡함 |
구성 | 단일 기능 중심 | 여러 패키지 모음 |
예시 | requests, flask | scipy, tensorflow |
설치 | pip install 패키지명 | pip install 라이브러리명 |
실무에서는: 그냥 둘 다 혼용해서 써도 문제없어요! 🤷♂️
기술적으로는: 패키지 < 라이브러리 (크기와 복잡도 면에서)
'note' 카테고리의 다른 글
python의 모듈 (1) | 2025.09.17 |
---|---|
언패킹 (0) | 2025.09.16 |
python - FOR문 (0) | 2025.09.16 |
response = client.chat.completions.create() (1) | 2025.09.15 |
bash, zsh, venv, Django, UV, pip (0) | 2025.09.14 |