byteforce

CPN 한국어 자습서 · 외부 문서 한국어 미러

UV 문서 · The pip interface

환경 잠금하기

Locking environments · 원문: docs.astral.sh/uv/pip/compile/

아래는 원문을 한국어로 옮긴 미러입니다. 코드·명령은 원문 그대로이며, 가장 최신 정보는 하단 원문 링크에서 확인하세요.

개요

잠금(locking)이란 ruff 같은 의존성을 받아 사용할 정확한 버전을 파일에 기록하는 것입니다. 이를 통해 서로 다른 도구와 플랫폼에서도 환경의 재현성이 보장됩니다.

요구사항 잠금

기본 컴파일

다양한 소스에서 의존성을 잠금합니다.

코드 · 명령
# pyproject.toml에서
$ uv pip compile pyproject.toml -o requirements.txt

# requirements.in에서
$ uv pip compile requirements.in -o requirements.txt

# 여러 파일에서
$ uv pip compile pyproject.toml requirements-dev.in -o requirements-dev.txt

# 표준 입력에서
$ echo "ruff" | uv pip compile -

출력은 기본적으로 화면에 표시됩니다. 파일에 저장하려면 -o/--output-file을 사용하세요.

선택적 의존성

extras를 활성화합니다.

코드 · 명령
# 특정 extra
$ uv pip compile pyproject.toml --extra foo

# 모든 extras
$ uv pip compile pyproject.toml --all-extras

의존성 그룹

pyproject.toml에서 의존성 그룹을 잠금합니다.

코드 · 명령
# 현재 디렉터리
$ uv pip compile --group foo

# 특정 프로젝트
$ uv pip compile --project some/path/ --group foo --group bar

# 여러 프로젝트에서
$ uv pip compile --group some/path/pyproject.toml:foo --group other/pyproject.toml:bar

요구사항 업그레이드

재컴파일 시 uv는 기존에 고정된 버전을 보존합니다. 업데이트하려면 다음을 사용합니다.

코드 · 명령
# 특정 패키지 업그레이드
$ uv pip compile - -o requirements.txt --upgrade-package ruff

# 모든 의존성 업그레이드
$ uv pip compile requirements.in --upgrade

환경 동기화

락파일(lockfile)에 맞는 정확한 버전을 설치합니다.

코드 · 명령
# 표준 requirements.txt
$ uv pip sync requirements.txt

# PEP 751 pylock.toml
$ uv pip sync pylock.toml

uv pip install로 설치할 때는 이미 설치된 패키지가 락파일과 충돌하지 않는 한 제거되지 않습니다. 엄격한 재현성이 필요하면 uv pip sync를 사용하세요.

제약 추가

제약(constraint)은 패키지 설치 없이 버전 범위를 제한합니다.

constraints.txt:

코드 · 명령
pydantic<2.0

사용법:

코드 · 명령
$ uv pip compile requirements.in --constraint constraints.txt

여러 제약 파일을 지원하며, uv는 워크스페이스 루트 pyproject.tomlconstraint-dependencies도 읽습니다.

빌드 제약 추가

빌드 제약은 런타임 제약과 유사하게 빌드 시점 의존성을 제어합니다.

build-constraints.txt:

코드 · 명령
setuptools==75.0.0

이는 패키지가 빌드 시점 의존성으로 필요할 때만 적용됩니다. uv는 워크스페이스 루트 pyproject.tomlbuild-constraint-dependencies도 읽습니다.

의존성 버전 재정의

재정의(override)는 추가적인 제약과 달리 버전 요구사항을 강제로 교체합니다.

overrides.txt:

코드 · 명령
c>=2.0

사용법:

코드 · 명령
$ uv pip compile requirements.in --override overrides.txt

이렇게 하면 전이적 의존성을 재정의하여 충돌을 해소하지만, 패키지 호환성 가정을 위반하면 런타임 오류가 발생할 수 있습니다.

원문(영어): https://docs.astral.sh/uv/pip/compile/ · 본 문서는 학습용 한국어 번역이며 원본의 권리는 원저작자(Astral)에게 있습니다.

원문(영어): https://docs.astral.sh/uv/pip/compile/