Skip to content

배포판 생성하기

프로젝트를 다른 사람들에게 배포하려면(예: PyPI와 같은 인덱스에 업로드하기 위해), 프로젝트를 배포 가능한 형식으로 빌드해야 한다.

파이썬 프로젝트는 일반적으로 소스 배포판(sdists)과 바이너리 배포판(wheels) 두 가지 형태로 배포된다. 전자는 프로젝트의 소스 코드와 추가 메타데이터를 포함한 .tar.gz 또는 .zip 파일이며, 후자는 사전 빌드된 아티팩트를 포함한 .whl 파일로 직접 설치할 수 있다.

중요

uv build를 사용할 때, uv는 빌드 프론트엔드로 동작하며, 사용할 파이썬 버전을 결정하고 빌드 백엔드를 호출한다. 포함된 파일과 배포판 파일명과 같은 빌드 세부 사항은 [build-system]에 정의된 대로 빌드 백엔드에 의해 결정된다. 빌드 설정에 대한 자세한 정보는 해당 도구의 문서에서 확인할 수 있다.

uv build 사용하기

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에 경로를 제공하면 다른 디렉터리의 프로젝트를 빌드할 수도 있다. 예를 들어 uv build path/to/project와 같이 입력한다.

uv build는 먼저 소스 배포판을 빌드한 후, 해당 소스 배포판에서 바이너리 배포판(wheel)을 빌드한다.

uv build를 소스 배포판만 빌드하도록 제한하려면 uv build --sdist를, 바이너리 배포판만 빌드하려면 uv build --wheel을 사용한다. 소스에서 두 배포판을 모두 빌드하려면 uv build --sdist --wheel을 입력한다.

빌드 제약 조건

uv build 명령은 --build-constraint 옵션을 지원한다. 이를 통해 빌드 과정에서 사용되는 모든 빌드 요구 사항의 버전을 제한할 수 있다. --require-hashes 옵션과 함께 사용하면, uv는 프로젝트를 빌드할 때 사용된 요구 사항이 특정한 알려진 해시 값과 일치하는지 검증한다. 이를 통해 재현 가능성을 보장한다.

예를 들어, 다음과 같은 constraints.txt 파일이 있다고 가정해 보자:

setuptools==68.2.2 --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a

다음 명령을 실행하면, 지정된 버전의 setuptools를 사용해 프로젝트를 빌드하고, 다운로드된 setuptools 배포판이 지정된 해시 값과 일치하는지 검증한다:

$ uv build --build-constraint constraints.txt --require-hashes