CPN 한국어 자습서 · 외부 문서 한국어 미러
UV 문서 · Concepts
Building distributions · 원문: docs.astral.sh/uv/concepts/projects/build/
아래는 원문을 한국어로 옮긴 미러입니다. 코드·명령은 원문 그대로이며, 가장 최신 정보는 하단 원문 링크에서 확인하세요.
프로젝트를 다른 사용자에게 배포하려면(예: PyPI 같은 인덱스에 업로드), 배포 가능한 형식으로 빌드해야 합니다.
Python 프로젝트는 일반적으로 다음 형식으로 배포됩니다:
- 소스 배포(Source distributions, sdists): 소스 코드와 메타데이터가 포함된 .tar.gz 또는 .zip 파일
- 바이너리 배포(Binary distributions, wheels): 설치 준비가 완료된 사전 빌드 아티팩트가 담긴 .whl 파일
uv build를 사용할 때 uv는 빌드 프론트엔드(frontend)로 작동하여 Python 버전을 결정하고 빌드 백엔드(build backend)를 호출합니다. 포함 파일, 배포 파일 이름 등의 빌드 세부사항은 [build-system]에 정의된 빌드 백엔드가 처리합니다.
uv build 사용uv build 명령어는 프로젝트의 소스 배포와 바이너리 배포를 모두 빌드합니다. 기본적으로 현재 디렉터리에서 빌드하고 아티팩트를 dist/ 서브디렉터리에 저장합니다:
$ uv build $ ls dist/ example-0.1.0-py3-none-any.whl example-0.1.0.tar.gz
경로를 제공하면 다른 디렉터리를 빌드할 수 있습니다: uv build path/to/project.
이 명령어는 먼저 소스 배포를 빌드한 다음, 해당 소스에서 바이너리 배포를 빌드합니다.
옵션:
- uv build --sdist: 소스 배포만 빌드
- uv build --wheel: 바이너리 배포만 빌드
- uv build --sdist --wheel: 소스에서 둘 다 빌드
--build-constraint를 사용하여 빌드 요구사항 버전을 제한합니다. --require-hashes와 함께 사용하면 다운로드한 배포가 특정 해시와 일치하는지 검증하여 재현성을 보장합니다.
constraints.txt 예시:
setuptools==68.2.2 --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a
검증과 함께 빌드합니다:
$ uv build --build-constraint constraints.txt --require-hashes
내부 패키지를 비공개로 표시하여 실수로 PyPI에 배포하는 것을 방지합니다:
[project] classifiers = ["Private :: Do Not Upload"]
이렇게 하면 PyPI가 업로드를 거부하지만, 대체 레지스트리에는 영향을 미치지 않습니다.
권장사항: 프로젝트별 PyPI API 토큰을 사용하면 일치하는 토큰 없이 실수로 배포하는 것을 방지할 수 있습니다.
원문(영어): https://docs.astral.sh/uv/concepts/projects/build/ · 본 문서는 학습용 한국어 번역이며 원본의 권리는 원저작자(Astral)에게 있습니다.