byteforce

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

UV 문서 · Concepts

캐싱

Caching · 원문: docs.astral.sh/uv/concepts/cache/

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

의존성 캐싱

uv는 실행 간 의존성의 재다운로드 및 재빌드를 방지하기 위해 적극적인 캐싱을 구현합니다. 캐싱 방식은 의존성 유형에 따라 다릅니다:

캐시 관리 옵션

캐시된 데이터를 관리하는 여러 명령이 있습니다:

명시적으로 전달된 로컬 디렉터리 의존성(예: uv pip install .)은 항상 재빌드 및 재설치됩니다.

동적 메타데이터

기본적으로 uv는 pyproject.toml, setup.py, setup.cfg, 또는 src 디렉터리가 변경될 때만 로컬 디렉터리 의존성을 재빌드합니다. 이 휴리스틱은 일부 시나리오를 놓칠 수 있습니다.

pyproject.tomltool.uv.cache-keys를 통해 사용자 정의 캐시 키를 추가하여 추가 캐시 트리거를 포함할 수 있습니다:

코드 · 명령
[tool.uv]
cache-keys = [{ file = "pyproject.toml" }, { git = { commit = true } }]

지원되는 캐시 키 유형: - file — 특정 파일 또는 글로브 패턴 - git — 커밋 해시 및 태그 - env — 환경 변수 - dir — 디렉터리 존재 여부

매 실행마다 특정 패키지를 강제로 재빌드하려면 tool.uv.reinstall-package를 사용합니다.

캐시 안전성

여러 uv 명령이 동시에 안전하게 실행될 수 있습니다. uv의 캐시는 스레드 안전하고 추가 전용으로 설계되었으며, 가상환경에 대한 파일 기반 잠금을 사용합니다. 캐시를 직접 수정하지 마세요.

캐시 지우기

캐시를 수정하는 작업은 다른 uv 명령이 실행되는 동안 차단됩니다(기본 5분 타임아웃, UV_LOCK_TIMEOUT으로 조정 가능). 적절한 경우 --force를 사용하여 잠금을 건너뜁니다.

CI에서의 캐싱

CI 환경의 경우 uv cache prune --ci를 실행하여 사전 빌드된 휠 및 소스 배포판을 제거하면서 빌드된 휠은 유지합니다. 이는 모든 것을 캐시하는 것보다 빠른 경우가 많습니다. 소스에서 빌드된 휠을 캐시하는 것은 가치 있는 경향이 있으므로 이 전략은 성능의 균형을 맞춥니다.

캐시 디렉터리

uv는 다음 우선순위로 캐시 디렉터리를 선택합니다:

  1. 임시 디렉터리(--no-cache가 지정된 경우)
  2. --cache-dir, UV_CACHE_DIR, 또는 tool.uv.cache-dir을 통한 사용자 정의 디렉터리
  3. 시스템 기본값(예: Unix의 $XDG_CACHE_HOME/uv, Windows의 %LOCALAPPDATA%\uv\cache)

참고: uv는 항상 캐시 디렉터리가 필요합니다. 더 나은 성능을 위해 --no-cache 대신 --refresh를 사용합니다. 캐시는 효율적인 파일 링크를 위해 Python 환경과 동일한 파일 시스템에 있어야 합니다.

캐시 버전 관리

캐시 버킷(휠, 배포판, Git 저장소 등)은 버전이 지정됩니다. 호환성을 깨는 형식 변경은 버전을 증가시켜 호환되지 않는 읽기/쓰기를 방지합니다. 여러 uv 버전이 캐시 디렉터리를 안전하게 공유할 수 있지만, 버전이 다를 때는 항목이 중복될 수 있습니다.

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

원문(영어): https://docs.astral.sh/uv/concepts/cache/