-패키지와 라이브러리의 차이가 뭐야?

좋은 질문이에요! 사실 개념적으로는 비슷하지만 미묘한 차이가 있어요.

기술적 정의:

패키지 (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

+ Recent posts