wheel(.whl)은 「사전 빌드된 파이썬 패키지」 형식입니다.
pip install이 매번 컴파일 안 하고 wheel을 받아 즉시 설치 가능 — 설치 속도와 안정성이 크게 개선됩니다.
기존 방식의 문제.
옛날엔 source distribution(sdist, .tar.gz)만 있어서 pip install 할 때마다 컴파일.
C 코드 의존하는 패키지(NumPy 등)는 사용자 환경에 컴파일러·헤더 없으면 실패.
wheel의 등장(PEP 427).
미리 컴파일해 둔 바이너리.
.whl 파일은 「플랫폼·파이썬 버전」별로 따로 — numpy-1.24.0-cp310-cp310-macosx_10_9_x86_64.whl 식.
pip가 자동으로 환경에 맞는 걸 선택.
빌드.
패키지 작성 시 python -m build로 .whl 자동 생성.
C 확장 없는 순수 파이썬은 「universal wheel」(any 플랫폼).
C 확장 있으면 cibuildwheel 같은 도구로 여러 플랫폼용을 자동 빌드.
manylinux.
리눅스 wheel은 「manylinux1·manylinux2014·manylinux_2_28」 같은 표준이 있어 「대부분의 리눅스 배포판에서 동작」 보장.
NumPy·SciPy 같은 C 확장 패키지가 모두 manylinux wheel을 제공해 즉시 설치됩니다.
한 줄 요약
wheel(.whl)은 사전 빌드된 패키지로 pip 설치가 매번 컴파일 없이 즉시.
플랫폼·버전별 따로, manylinux 표준으로 리눅스 호환성 확보.
cibuildwheel로 다중 플랫폼 자동 빌드.
더 알아볼 것
- sdist vs wheel 차이
- cibuildwheel — CI에서 wheel 빌드
- pure Python wheel — universal