UV: 빠르고 가벼운 Python 패키지 관리자

Python 패키지 관리를 할 때 가장 많이 사용하는 도구는 pip이다. 하지만 최근 uv라는 새로운 패키지 관리자를 접하고 사용중인데 속도도 매우 빠르고 많은 사람들이 사용했으면 좋겠다 라는 생각이 들어 이 글을 작성하게 됐다. 이번 글에서는 pipuv의 차이점과 장단점을 비교하고, uv의 기본적인 사용법을 소개한다.

1. pip와 uv의 차이점

1.1 pip란?

pip(Pip Installs Packages)는 Python의 공식 패키지 관리자로, PyPI(Python Package Index)에서 패키지를 설치하고 관리하는 역할을 한다. Python을 설치하면 기본적으로 포함되어 있으며, requirements.txt와 같은 의존성 관리 기능을 제공합니다.

1.2 uv란?

uv는 Pip과 Poetry를 대체할 수 있는 빠르고 가벼운 Python 패키지 관리자입니다. Rust로 작성되어 높은 성능을 제공하며, pip, pip-tools, venv, Poetry 등의 기능을 하나로 통합한 것이 특징입니다.

  • pip: Python 패키지를 설치하고 관리하는 기본 도구.
  • pip-tools: pip의 의존성 해결 기능을 강화해주는 도구로, requirements.txt 파일을 보다 안정적으로 생성할 수 있음.
  • venv: Python의 가상 환경을 생성 및 관리하는 기본 도구.
  • Poetry: 프로젝트 및 패키지 관리를 강화한 도구로, 의존성 관리와 빌드 기능을 제공.

2. pip와 uv의 장단점

2.1 pip의 장점

  • Python 기본 패키지 관리자로, 널리 사용되고 있음
  • 광범위한 문서와 지원 커뮤니티 보유
  • pip-tools와 조합하여 보다 정교한 의존성 관리 가능

2.2 pip의 단점

  • 속도가 느릴 수 있음
  • 의존성 해결 능력이 제한적 (복잡한 프로젝트에서 문제 발생 가능)
  • 가상 환경을 별도로 생성해야 함 (venv 필요)

2.3 uv의 장점

  • Rust 기반으로 매우 빠른 성능 제공
  • 가상 환경을 별도 설정 없이 자동 관리
  • pip-tools 없이도 강력한 의존성 해결 기능 지원
  • pip, venv, pip-tools 등을 통합한 일관된 환경 제공

2.4 uv의 단점

  • 아직 상대적으로 새로운 도구로, 일부 사용자가 익숙하지 않을 수 있음
  • 일부 패키지에서 예상치 못한 호환성 문제가 있을 수 있음
비교 항목 pip uv
언어 Python Rust
성능 일반적 매우 빠름
가상 환경 지원 별도(venv) 자체 지원
의존성 해결 제한적 강력한 해결 기능
멀티 플랫폼 지원 지원
사용 용이성 익숙함 간단하고 빠름

3. uv 사용법

uv는 설치 후 다양한 명령어를 통해 활용할 수 있습니다.

3.1 uv 설치

curl -LsSf https://astral.sh/uv/install.sh | sh

3.2 프로젝트 초기화

uv init [프로젝트명]

이 명령어는 프로젝트 디렉토리를 생성하고, pyproject.toml 파일을 포함한 초기 설정 파일들을 생성합니다.

3.3 패키지 추가

uv add 패키지명
  • 특정 패키지를 프로젝트에 추가합니다.
  • 예시:
uv add requests
  • 개발용 의존성 추가:
uv add pytest --dev
  • 특정 버전 설치:
uv add requests==2.25.1
  • 추가 옵션 사용:
uv add 패키지명 --extra 옵션명

3.4 패키지 제거

uv remove 패키지명
  • 프로젝트에서 특정 패키지를 제거합니다.
  • 예시:
uv remove requests

3.5 의존성 동기화

uv sync
  • pyproject.tomluv.lock 파일을 기반으로 의존성을 자동으로 설치 및 동기화합니다.
  • 개발용 의존성을 제외하고 동기화하려면:
uv sync --no-dev

3.6 가상 환경 생성 및 관리

  • 가상 환경 생성:
uv venv [가상환경경로]
  • 특정 경로에 가상 환경을 생성합니다.
  • 예시:
uv venv .venv
  • 특정 Python 버전 사용하여 가상 환경 생성:
uv venv --python 3.9.7
  • 가상 환경 활성화:
source .venv/bin/activate
  • Windows에서는:
.venv\Scripts\activate
  • 가상 환경 비활성화:
deactivate

4. 자주 묻는 질문 (FAQ)

Q1. 기존 pip 프로젝트에서 uv를 사용할 수 있나요?

네, 가능합니다. 기존 pip 프로젝트에서 uv로 전환하려면 다음 명령어를 실행하면 됩니다:

uv sync

이 명령어는 기존 requirements.txt 또는 pyproject.toml을 기반으로 의존성을 자동으로 설정합니다.

Q2. uvPoetry의 차이점은 무엇인가요?

  • uvpip, venv, pip-tools 등을 대체하는 통합형 패키지 관리자입니다.
  • Poetry는 프로젝트 관리 기능이 더 강력하며, 패키지 퍼블리싱과 같은 기능도 포함되어 있습니다.
  • 속도와 가벼움을 원하면 uv, 프로젝트 전체 관리를 원하면 Poetry를 선택하는 것이 좋습니다.

Q3. uv를 사용할 때 발생할 수 있는 문제와 해결 방법은?

  • 문제: 일부 패키지가 uv와 호환되지 않을 수 있음.
    • 해결: uv pip install을 사용하여 전통적인 pip 방식으로 설치할 수 있습니다.
uv pip install 패키지명
  • 문제: uv sync 시 패키지 충돌이 발생할 수 있음.
    • 해결: uv sync --force 명령어를 사용하여 강제로 동기화할 수 있습니다.

+ Recent posts