C.W.K.
Stream
Lesson 04 of 05 · published

uv.lock, Universal Resolution, Tool Isolation

~11 min · uv, concepts, lockfile

Level 0초심자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

세 uv 개념이 '빠른 pip' 이상으로 만듦 — 도구 여섯 개 대체할 수 있는 이유.

uv.lock — 진짜 lockfile. uv.lock 이 모든 직접 + transitive dep 를 콘텐츠 hash 와 함께 핀. 머신 간 재현성 bit-exact. uv sync 가 정확히 lock 된 거 install; 뭔가 diverge 하면 sync 가 loud 하게 fail. requirements.txt 가 항상 척했지만 절대 못 됐던 거.

Universal resolution. uv.lock 이 multiple Python 버전 + 플랫폼 (macOS arm64, macOS x64, Linux, Windows) 항목 포함. 한 lockfile, 모든 타겟. 그래서 macOS dev 머신 + Linux CI 서버 + Windows Docker 호스트 팀이 같은 lockfile 에서 재현 가능 install.

Tool isolation. uv tool install ruff 가 ruff 를 ~/.local/share/uv/tools/ruff/ 의 자기 private venv 에 install, 그 다음 PATH 에 ruff 노출. 도구가 프로젝트 deps 와 충돌 못 함; 프로젝트가 도구 못 깨뜨림. pipx 가 한 거지만 빌트인.

빌트인 Python 관리. uv python install 3.13 이 portable Python (python-build-standalone 프로젝트에서) 다운, 등록. Multiple 버전 공존. uv python pin 3.13.python-version 작성해서 이 프로젝트를 그 인터프리터에 lock. pyenv 없음, 시스템-Python 혼란 없음.

Code

uv.lock 해부·toml
# uv.lock (발췌 — 자동 생성, 절대 손 편집 안 함)
version = 1
requires-python = ">=3.11"
resolution-markers = ["sys_platform == 'darwin' and python_version >= '3.11'", ...]

[[package]]
name = "flask"
version = "3.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://...", hash = "sha256:abc..." }
wheels = [
  { url = "https://...", hash = "sha256:def..." },
]
dependencies = [
  { name = "blinker", marker = "..." },
  { name = "click", marker = "..." },
  { name = "itsdangerous", marker = "..." },
  { name = "jinja2", marker = "..." },
  { name = "werkzeug", marker = "..." },
]
관리되는 Python 검사·bash
# uv 가 어떤 Python 알아?
uv python list
# cpython-3.13.0-macos-aarch64-none    /Users/you/.local/share/uv/python/...
# cpython-3.12.4-macos-aarch64-none    /Users/you/.local/share/uv/python/...
# cpython-3.11.9-macos-aarch64-none    /Users/you/.local/share/uv/python/...
# (...그리고 install 가능하지만 안 깐 많은 항목)

# Install + 사용
uv python install 3.13
uv python pin 3.13            # .python-version 작성

# 이 프로젝트 이제 3.13 사용, 시스템 Python 무관.

External links

Exercise

uv 프로젝트에서 'uv lock' (또는 'uv sync') 돌리고 uv.lock 열어. 한 패키지 항목 읽어 — multiple wheel URL (플랫폼 별), SHA256 hash, dep 트리 봐. 머릿속에서 손으로 쓴 requirements.txt 와 비교. 차이가 재현성.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.