CPN 한국어 자습서 · 외부 문서 한국어 미러
UV 문서 · Concepts
Locking and syncing · 원문: docs.astral.sh/uv/concepts/projects/sync/
아래는 원문을 한국어로 옮긴 미러입니다. 코드·명령은 원문 그대로이며, 가장 최신 정보는 하단 원문 링크에서 확인하세요.
"락(locking)은 프로젝트의 의존성을 락파일(lockfile)로 해석하는 과정입니다. 동기화(syncing)는 락파일에서 패키지의 일부를 프로젝트 환경에 설치하는 과정입니다."
두 과정은 uv에서 자동으로 이루어집니다. uv run을 실행하면 명령어 실행 전에 프로젝트가 락되고 동기화되어 환경이 최신 상태로 유지됩니다. uv tree와 같이 락파일을 읽는 명령어도 자동으로 업데이트합니다.
다음 플래그로 이 동작을 수정할 수 있습니다:
- --locked: 자동 업데이트 대신 락파일 업데이트가 필요한 경우 오류를 발생시킴
- --frozen: 최신 여부 확인 없이 락파일을 사용함
- --no-sync: 환경 최신 여부 확인 없이 명령어를 실행함
uv는 의존성 추가나 잠긴 버전을 제외하는 버전 제약 수정 등 프로젝트 메타데이터 변경 시 락파일을 오래된 것으로 간주합니다. 단, "uv는 새 버전의 패키지가 릴리스될 때 락파일을 오래된 것으로 간주하지 않습니다."
uv lock --check를 사용하여 락파일이 현재 프로젝트 사양과 일치하는지 확인합니다.
락파일을 명시적으로 생성하거나 업데이트합니다:
$ uv lock
환경을 수동으로 동기화합니다:
$ uv sync
동기화 시 uv는 기본적으로 프로젝트를 편집 가능(editable) 패키지로 설치하므로, 변경 사항에 대해 재동기화가 필요하지 않습니다. --no-editable을 사용하면 이 동작을 비활성화합니다.
uv sync는 기본적으로 정확한 동기화를 수행하여 필요하지 않은 패키지를 제거합니다. --inexact를 사용하면 유지합니다. 반대로, uv run은 기본적으로 비정확(inexact) 동기화를 사용합니다. 정확한 동작을 원하면 --exact를 추가합니다.
선택적 의존성(extras)의 경우:
$ uv sync --extra foo $ uv sync --all-extras
개발 의존성의 경우, dev 그룹이 기본으로 동기화됩니다. 다음으로 제어합니다:
- --no-dev: 개발 의존성 제외
- --only-dev: 개발 의존성만 설치
- --group <name>: 특정 그룹 포함
- --only-group <name>: 특정 그룹만 설치
기존 락파일이 있을 때, uv는 제약이 제외하지 않는 한 잠긴 버전을 유지합니다. 모든 패키지를 업그레이드합니다:
$ uv lock --upgrade
단일 패키지를 업그레이드합니다:
$ uv lock --upgrade-package <package> $ uv lock --upgrade-package <package>==<version>
이 플래그들은 uv sync 및 uv run에서도 동작합니다.
여러 형식으로 내보냅니다:
$ uv export --format requirements.txt $ uv export --format pylock.toml $ uv export --format cyclonedx1.5
다단계 설치(Docker에 유용)의 경우:
- --no-install-project: 현재 프로젝트 설치 건너뜀
- --no-install-workspace: 모든 워크스페이스(workspace) 멤버 건너뜀
- --no-install-package <name>: 특정 패키지 건너뜀
의존성은 여전히 설치됩니다. 지정된 대상만 제외됩니다.
프리뷰(preview) 기능으로, uv는 OSV에 대해 락파일을 스캔하여 OpenSSF의 악성 패키지 데이터베이스와 비교하여 알려진 악성코드를 확인할 수 있습니다. 일치 항목이 발견되면 동기화가 종료됩니다. 활성화하려면:
UV_MALWARE_CHECK=1
원문(영어): https://docs.astral.sh/uv/concepts/projects/sync/ · 본 문서는 학습용 한국어 번역이며 원본의 권리는 원저작자(Astral)에게 있습니다.