📚 공식 문서 : https://docs.astral.sh/uv/
Python에서 패키지를 자동으로 설치해주는 프로그램을 만들던 중, 기존 pip 기반 설치 방식이 느리다고 느꼈습니다. 이를 개선하기 위해 새로운 툴인 uv를 적용해 보기로 했습니다.

패키지 설치, 종속성 관리, 빌드, 배포까지 가능한 올인원 Python 프로젝트 관리 도구
기존의 pip, pip-tools, poetry, pyenv, pipx 등을 통합해 하나로 대체할 수 있는 툴이다.
pip보다 10~100배 빠른 설치 속도Cargo 스타일의 워크스페이스 지원💻 macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
🖥 Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
🐍 PyPI
pip install uv
uv venv .venv # .venv 폴더에 가상환경 생성
uv로 만든 가상환경은 pip, poetry에서도 사용할 수 있으며, 생성 속도는 일반 venv에 비해 체감상 매우 빠르다.
uv pip install pytest
기존 pip install 앞에 uv만 붙이면 되니 굉장히 간단하며,
속도는 pip과 비교하기 어려울 정도로 빠르다.
polars==1.26.0
pandas
matplotlib
streamlit
argparse
pure-python-adb
# 기존 pip 설치 코드 예시입니다.
from subprocess import check_call
from sys import executable
import os
REQUIREMENTS_FILE = "requirements.txt"
def install_with_pip():
print("📦 pip로 requirements.txt 설치 중...")
check_call([executable, "-m", "pip", "install", "-r", REQUIREMENTS_FILE])
def install_requirements():
if not os.path.exists(REQUIREMENTS_FILE):
print(f"❌ '{REQUIREMENTS_FILE}' 파일이 존재하지 않습니다.")
return
try:
install_with_pip()
print("🎉 모든 필수 패키지 설치 완료!")
except Exception as e:
print(f"❌ pip 설치 중 오류 발생: {e}")
if __name__ == "__main__":
print("🔍 requirements.txt 기반 라이브러리 설치 확인 중…")
install_requirements()
# uv를 활용한 설치 코드입니다. uv가 설치되어 있지 않으면 자동으로 설치합니다.
from subprocess import check_call
import shutil
import os
REQUIREMENTS_FILE = "requirements.txt"
def is_uv_available():
return shutil.which("uv") is not None
def install_uv():
print("📥 uv가 설치되어 있지 않아 설치를 진행합니다...")
check_call(["pip", "install", "uv"])
def install_with_uv():
print("⚡ uv로 requirements.txt 설치 중...")
check_call(["uv", "pip", "install", "--system", "-r", REQUIREMENTS_FILE])
def install_requirements():
if not os.path.exists(REQUIREMENTS_FILE):
print(f"❌ '{REQUIREMENTS_FILE}' 파일이 존재하지 않습니다.")
return
if not is_uv_available():
install_uv()
try:
install_with_uv()
print("🎉 모든 필수 패키지 설치 완료!")
except Exception as e:
print(f"❌ uv 설치 중 오류 발생: {e}")
if __name__ == "__main__":
print("🔍 requirements.txt 기반 uv 라이브러리 설치 확인 중…")
install_requirements()
| 설치 방식 | 설치 시간 |
|---|---|
⏱ pip | 44.99초 |
⚡ uv | 2.90초 |
약 15배 이상 빠른 설치 속도
또한, 대용량 프로젝트나 반복적인 설치가 필요한 환경에서는 uv가 더 큰 이점을 제공합니다.
uv는 단순한 패키지 설치 도구를 넘어, Python 프로젝트 전반의 종속성 관리, 빌드, 배포까지 아우르는 통합 솔루션입니다. 특히 기존 pip 대비 월등한 속도와 효율성을 제공하며, 범용 잠금 파일과 작업 공간 지원으로 복잡한 프로젝트 환경에서도 안정적인 관리가 가능합니다.
직접 사용해보며 기존 툴과의 차이를 체감해보시길 추천합니다.
Python 패키지 관리에 있어 새로운 대안으로 충분한 가치를 가진 도구라고 생각합니다.