배포판 생성하기¶
프로젝트를 다른 사람들에게 배포하려면(예: 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