PEP, 메일링 리스트 등 정리 https://packaging.python.org/en/latest/discussions/ https://www.pypa.io/en/latest/history/ 연도 주요 사건 & 제안 배경·의의 1998 ‒ 2000 distutils 표준 라이브러리 (Greg Ward) → Python 2.0에 포함 (Python 3.12에서 제거) • setup.py sdist로 소스 배포만 가능 • 바이너리 배포·의존성 관리 기능 부족 2004 ‒ 2008 setuptools / easy_install (Phillip Eby) → .egg 형식 도입 • import-time zip-import 덕분에 “설치 없이” 로드 가능 • 이슈 : 플랫폼·ABI 태그 부재, script entry point 처리 문제, namespace 미지원 2008 ‒ 2011 Packaging Summit (PyCon 2008) → Distutils-SIG PEP 345 (메타데이터 1.2), PEP 376 (설치 레코드), PEP 386 (버전 규칙) 등 • “egg의 한계 + 서로 다른 빌드·배포 파편화” 해결 필요성 확인 • Python Packaging Authority (PyPA) 결성, distutils2 실험(결국 폐기) 2012 Wheel 규격 제안 (Daniel Holth) → PEP 425 (호환 태그), PEP 427 (wheel 1.0), PEP 426 (메타데이터 1.3, 이후 Core Metadata로 발전) 채택 주요 개발목표 (1) OS/ABI/파이썬 버전별 호환 태그로 정확한 바이너리 제공 (2) 단순 파일 복사만으로 빠른 설치 (3) zip-safe 포맷이지만 import-time hack 없음 (egg 대비 개선) (4) 설치 기록은 PEP 376 표준으로 통합 2013 wheel 0.9‒1.0 릴리즈 → pip install <pkg>.whl 지원 (pip 1.4), setup.py bdist_wheel 커맨드 보급 • Linux binary 문제를 해결하기 위해 곧이어 manylinux 제안 논의 시작 2014 ‒ 2016 PEP 425 Platform Tags 확대, PEP 513 (manylinux1), PEP 571 (manylinux2010) 등 • 리눅스 배포판 간 glibc 호환 계층 정의 → Wheel이 C-extension 생태계의 기본 배포 형식으로 자리잡음