2 minute read

들어가며

기존에 사용하던 conda와 같은 패키지 매니저 대신 최근 uv를 쓰는 프로젝트가 하나둘씩 늘어나는 추세이다. uv는 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv 등을 대체할 하나의 도구로, python 패키지 설치 및 관리, 빌드, 배포까지 가능하며 엄청난 속도를 자랑한다. 특이사항으로는 pip보다 10-100배 빠르다는 점이다. 다음은 uv에서 공식적으로 홍보하고 있는 내용이다.

  • 🚀 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv 등을 대체하는 올인원 도구
  • ⚡️ pip보다 10~100배 빠른 속도
  • 🗂️ 범용 락파일을 포함한 종합적인 프로젝트 관리 제공
  • ❇️ inline dependency metadata를 지원하는 스크립트 실행 기능
  • 🐍 Python 버전 설치 및 관리
  • 🛠️ Python 패키지로 배포된 도구의 설치 및 실행 지원
  • 🔩 익숙한 CLI로 pip 호환 인터페이스 및 성능 향상
  • 🏢 대규모 프로젝트를 위한 Cargo 스타일의 워크스페이스 지원
  • 💾 의존성 중복 제거를 위한 글로벌 캐시로 디스크 공간 효율화
  • ⏬ Rust나 Python 없이도 curl 또는 pip로 설치 가능
  • 🖥️ macOS, Linux, Windows 지원

설치방법

설치는 OS에 따라 다음과 같이 진행할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# On Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# macOS
brew install uv

# On Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip
pip install uv

# Or pipx
pipx install uv

프로젝트

프로젝트는 여러개의 파일로 이루어진 파이썬 코드를 효과적으로 다루기 위한 하나의 단위이다. 프로젝트는 pyproject.toml에 메타데이터를 저장해 의존성 등을 정의한다.

그럼 프로젝트를 만들어보자.

초기화

프로젝트를 만들기 위해서는 우선 초기화가 필요하다. 초기화는 다음과 같이 uv init [project name]으로 할 수 있다.

1
2
3
4
5
6
7
8
# 특정 디렉토리에서
uv init hello-world
cd hello-world

# initialize a project in the working directory:
mkdir hello-world
cd hello-world
uv init

프로젝트를 생성하면 다음과 같은 파일들이 생기게 된다.

1
2
3
4
5
├── .gitignore
├── .python-version
├── README.md
├── main.py
└── pyproject.toml

이는 프로젝트의 의존성 등을 관리하는 파일들이다.

가상환경

프로젝트를 초기화했다면 가상환경을 생성하자. 가상환경을 생성하려면 다음과 같이 uv venv를 입력하면 된다.

1
uv venv

또한, 특정 버전을 명시하여 생성할 수도 있다. 필요시에 uv는 해당 버전을 다운로드받고 설치한다.

1
uv venv [--python <python-version>]

가상환경을 생성한 뒤 실행은 venv 명령어와 동일하게 한다.

1
2
3
4
5
6
# activate
source .venv/bin/activate  # Linux/macOS
.venv\Scripts\activate.bat # Windows

# 비활성화
deactivate

그 외 명령어는 venv를 참고하자.

1
2
3
4
5
# 가상환경 목록 보기
uv venv list

# 가상환경 제거
uv venv remove <env-name>

패키지 설치

패키지 설치는 기존에 pip으로 설치하던 것에서 앞에 uv만 붙이면 된다.

1
2
3
4
uv pip install <package-name>

# requirements 사용
uv pip install -r requirements.txt

버전을 지정하는 등 사용법은 pip과 동일하다.

Leave a comment