파이썬 프로젝트를 새로 받으면 의존성 설치를 기다리는 시간이 깁니다. 요즘 README마다 pip 대신 uv로 설치하라고 적는 이유를 재 봤습니다.
같은 패키지, 같은 맥
| 조건 | 걸린 시간 |
|---|---|
| pip | 7.2초 |
| uv (캐시 없이) | 1.2초 |
| uv (캐시 있음) | 0.1초 |
- 설치한 것:
pandas fastapi requests matplotlib(의존성 포함 27개) - 환경: Apple M4 Pro, Python 3.13.12, uv 0.11.4, 2026년 11월 2일
- 방법: 매번 새 가상환경을 만들고
/usr/bin/time으로 쟀습니다. pip는 3회(7.67·7.17·6.39초), uv 캐시 없음(--no-cache)도 3회(1.25·1.16·1.10초) 재서 가운데 값을 적었습니다.
네트워크 속도에 따라 숫자는 달라집니다. 그래도 같은 조건에서 약 6배 차이였고, 캐시가 있으면 내려받기 없이 링크만 걸어 0.1초에 끝났습니다. uv 저장소는 pip보다 10~100배 빠르다고 설명합니다.
내 컴퓨터에서 재 보려면:
python3 -m venv a && time a/bin/pip install pandas fastapi requests matplotlib
uv venv b && time uv pip install --no-cache -p b pandas fastapi requests matplotlib
속도 말고 갈아타는 이유
uv는 여러 도구가 하던 일을 하나로 합칩니다. 저장소 README 기준으로 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv를 대신합니다.
- 가상환경:
uv venv - 파이썬 버전 설치·전환:
uv python install 3.13 - 프로젝트 의존성 관리와 잠금 파일:
uv add,uv sync - 도구 실행:
uvx ruff(pipx 대신)
바꾸는 법: pip 앞에 uv
기존 습관 그대로 쓰려면 이것만 바꾸면 됩니다.
uv venv # .venv 만들기
uv pip install pandas # pip install 대신
uv pip install -r requirements.txt
주의: 가상환경이 없으면 거부한다
pip는 가상환경이 없으면 시스템 파이썬에 그냥 설치하려 들지만, uv는 멈추고 이렇게 알려 줍니다.
$ uv pip install requests
error: No virtual environment found; run `uv venv` to create an environment,
or pass `--system` to install into a non-virtual environment
처음엔 당황스럽지만 실수로 시스템 파이썬을 더럽히지 않게 막아 주는 동작입니다. uv venv를 먼저 만들거나, 시스템에 깔아야 할 때만 --system을 붙이세요.
또 하나, uv pip install은 pip처럼 설치만 하고 pyproject.toml에는 기록하지 않습니다. 팀과 의존성을 공유하려면 uv add를 씁니다.
오늘 할 일
지금 쓰는 프로젝트에서 uv venv를 만들고, 평소 치던 pip install 앞에 uv를 붙여 보세요. 기다리는 시간이 줄어든 게 바로 느껴집니다.
가상환경과 포트 관리를 GUI로 하고 싶다면: uvws를 만든 이유