본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

매일 치는 uv 명령

~13 min · uv, commands, workflow

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

uv에는 두 가지 명령 흐름이 있어. uv pip ...은 기존 pip 명령과 플래그를 그대로 받는 호환 경로고, uv add·uv run·uv sync는 새 프로젝트에 권장하는 uv 고유 흐름이야.

uv init <name>은 pyproject.toml, .python-version, 초기 src 구조를 가진 새 프로젝트를 만들어. uv add <pkg>는 필요하면 자동으로 환경을 만들고 의존성을 설치한 뒤 uv.lock을 갱신해. uv add --dev <pkg>는 개발 의존성을 추가하고, uv remove <pkg>는 pip과 달리 더 이상 쓰이지 않는 전이 의존성까지 깨끗하게 제거해.

uv run <cmd>은 프로젝트 환경을 자동으로 찾아 그 안에서 명령을 실행해. 더 이상 source .venv/bin/activate를 먼저 입력할 필요가 없어. uv run pytest, uv run python main.py, uv run flask --app server run이 모두 바로 작동해.

uv python install <version>은 pyenv를 대신해 관리되는 Python을 설치하고, uv python pin <version>은 .python-version을 작성해 프로젝트 버전을 고정해. uv sync는 uv.lock에서 프로젝트의 정확한 상태를 재현해.

uvx <tool>은 uv의 npx 또는 pipx run으로, 설치 기록을 남기지 않고 도구를 실행해. uvx ruff check .uvx black .처럼 써. 계속 쓸 도구는 uv tool install <tool>로 전역 격리 설치할 수 있어.

Code

새 프로젝트를 위한 현대 uv 작업 흐름·bash
# 부트스트랩
uv init myproject && cd myproject
# pyproject.toml, .python-version, src/myproject/__init__.py 생성

# Python 버전 핀
uv python pin 3.13

# Deps 추가
uv add flask sqlalchemy
uv add --dev pytest ruff mypy

# 실행 — 자동으로 venv 활성화
uv run python -c "import flask; print(flask.__version__)"
uv run pytest
uv run flask --app server run

# 재현성 lock
# (uv.lock 이 'uv add' / 'uv lock' 으로 자동 생성 + 업데이트)
uv sync                    # uv.lock 이 말하는 정확히 install
pip 명령과 바로 호환되는 대체 경로·bash
# 기존 pip 기반 프로젝트에서 uv 를 더 빠른 pip 으로 사용 가능
uv pip install requests
uv pip install -r requirements.txt
uv pip freeze
uv pip list
uv pip uninstall requests

# 같은 flag, 같은 동작, 극적으로 빠름.
# 이게 마찰 0 마이그레이션 path.
pipx를 대신하는 도구 관리·bash
# install 없이 도구 실행 ('pipx run' 대체)
uvx ruff check .
uvx black .
uvx httpie https://example.com

# 도구 글로벌 install ('pipx install' 대체)
uv tool install ruff
uv tool install black
uv tool list
uv tool upgrade --all

External links

Exercise

'uv init scratch && cd scratch && uv add flask requests pytest && uv run python -c "import flask; print(flask.__version__)"'으로 새 프로젝트를 시작해. 전체 과정이 몇 초 만에 끝나는지 확인하고 pyproject.toml과 uv.lock을 읽어 재현성 구성을 살펴봐.

Progress

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

댓글 0

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

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