UV: 빠르고 가벼운 Python 패키지 관리자
Python 패키지 관리를 할 때 가장 많이 사용하는 도구는 pip
이다. 하지만 최근 uv
라는 새로운 패키지 관리자를 접하고 사용중인데 속도도 매우 빠르고 많은 사람들이 사용했으면 좋겠다 라는 생각이 들어 이 글을 작성하게 됐다. 이번 글에서는 pip
와 uv
의 차이점과 장단점을 비교하고, 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.toml
과uv.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. uv
와 Poetry
의 차이점은 무엇인가요?
uv
는pip
,venv
,pip-tools
등을 대체하는 통합형 패키지 관리자입니다.Poetry
는 프로젝트 관리 기능이 더 강력하며, 패키지 퍼블리싱과 같은 기능도 포함되어 있습니다.- 속도와 가벼움을 원하면
uv
, 프로젝트 전체 관리를 원하면Poetry
를 선택하는 것이 좋습니다.
Q3. uv
를 사용할 때 발생할 수 있는 문제와 해결 방법은?
- 문제: 일부 패키지가
uv
와 호환되지 않을 수 있음.- 해결:
uv pip install
을 사용하여 전통적인pip
방식으로 설치할 수 있습니다.
- 해결:
uv pip install 패키지명
- 문제:
uv sync
시 패키지 충돌이 발생할 수 있음.- 해결:
uv sync --force
명령어를 사용하여 강제로 동기화할 수 있습니다.
- 해결: