Rust로 작성된 고성능 Python 패키지 및 프로젝트 관리 도구로 pip, virtualenv, poetry 등을 대체할 수 있는 빠르고 효율적인 패키지 관리 도구입니다.
흔히 사용되는 pip이나 poetry 같은 다른 도구들에 비해 패키지 설치가 엄청나게 빠른 것이 특징입니다.
uv init
만으로 가상환경이 자동으로 구성되어, 별도의 Python 가상환경 설치 없이 즉시 개발을 시작할 수 있습니다.
pyproject.toml
, uv.lock
파일을 활용해 의존성 명시 및 재현 가능한 환경 구성 보장합니다.
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
pip install uv
uv --version
uv 0.7.14 (e7f596711 2025-06-23)
Git에서 git init
명령어를 통해 디렉토리를 Git으로 관리하겠다고 선언하듯, uv 역시 uv init
명령어를 통해 작업 디렉토리를 초기화해야 uv 기능을 사용할 수 있습니다.
즉, uv를 사용하기 위해서는 최초에 uv init
명령어로 해당 디렉토리를 설정해주는 과정이 필요합니다.
# 작업 디렉토리 설정 초기화
uv init
# 디렉토리 생성 + 초기화
uv init my-project
.python-version
: 프로젝트에서 사용할 Python 버전이 명시된 파일입니다.main.py
: 실행 또는 테스트를 위한 기본 Python 스크립트 파일입니다.pyproject.toml
: 프로젝트의 메타데이터와 빌드 설정, 의존성 등을 정의하는 표준 구성 파일입니다.README.md
: 프로젝트의 목적과 사용법 등을 설명하는 문서 파일입니다.pip install
명령어를 통해 설치했던 파이썬 라이브러리들 역시 uv에서는 uv 문법에 맞게 설치 및 삭제를 진행해주어야 합니다.# 패키지 추가
uv add [패키지 명]
uv add requests pandas faker
# 패키지 제거
uv remove [패키지 명]
requirements.txt
파일에 정리된 라이브러리들을 한 번에 설치하고자 한다면 아래 명령어로 가능합니다.uv pip install -r requirements.txt
pyproject.toml
파일의 dependencies
항목에 저장되며, 삭제시엔 해당 항목에서 사라집니다.uv run
명령어를 활용하는 것이 가장 좋습니다.실행 방식 | 가상환경 적용 | 권장 여부 |
---|---|---|
uv run main.py | ✅ 자동 적용 | ✅ 추천 |
source .venv/bin/activate && python main.py | ✅ 수동 적용 | ⭕ 가능하나 불편 |
python main.py | ❌ 기본 환경 사용 | ❌ 권장하지 않음 |
uv init
때 명시한 작업 디렉토리 이름으로 가상환경이 활성화됩니다.기존 가상환경 삭제 → 새로운 버전의 가상환경 생성 → 라이브러리 설치 → python 파일 실행
이 순서로 작업이 진행되어야 합니다. .python-version
과 pyproject.toml
파일만 수정하면, 기존 디렉토리를 그대로 유지한 채 가상환경의 Python 버전만 간편하게 변경할 수 있습니다.uv run main.py
명령어를 치게되면 아래의 과정을 자동으로 수행하게 됩니다.기존 가상환경 제거 → 새로운 가상환경 생성 → 패키지 설치 → 실행
pip
과 venv
조합을 사용했고, 지금도 많이 사용되고 있습니다. 하지만 느린 속도, Python 버전 변경의 어려움 등 pip
이 가지는 명확한 한계점이 있었습니다.uv
는 이를 보완하고 Python의 패키지 관리를 더욱 효율적이고 빠르게 할 수 있도록 개발된 도구입니다. 특히 Python 버전 관리나 가상환경 설정, 의존성 설치 속도 등에서 uv
는 매우 강력한 이점을 제공합니다. uv
는 독자적인 디렉토리 구조를 가지고 있지만 기존 pip
로 설치된 디렉토리와도 높은 호환성을 유지해, 기존 프로젝트를 완전히 갈아엎지 않아도 자연스럽게 도입할 수 있습니다. 이처럼 부담 없이 도입이 가능하면서도 더 나은 개발 환경을 제공한다는 점에서 매우 매력적입니다.uv
를 표준 툴로 채택해가고 있는 추세입니다.uv
를 적극 고려해보세요. 빠르고 가벼우며, 무엇보다 개발자의 귀찮음을 줄여주는 도구입니다.