본문 바로가기

uv - Python의 대안 패키지 및 프로젝트 관리자

기술적인 이야기/기타 개발 2024. 9. 3.
반응형

어쩌다가 파이썬에 uv라는 또 다른 패키지 매니저가 있는 것을 알게 되었다. 새롭다고 하기엔 나온 지 좀 된 것 같지만 그래도 새롭게 알게 되었으니 이 uv에 관해서 간단히 정리해 보자.

uv - An extremely fast Python package and project manager, written in Rust

uv는 대놓고 속도를 가장 중요시하는 패키지 및 프로젝트 매니저임을 강조하고 있다. 심지어 Rust로 쓰여서 상대적으로 Python에 비해 가볍고 빠를 수밖에 없어 보인다. 물론 Python용 도구가 Python으로 쓰이지 않은 것에 의아함이 있을 수도 있겠지만 아무렴 어떨까.

공식 프로젝트 저장소에서 자랑하는 그 '속도'

설치 방법은 다채롭다. 공식 저장소에서 소개한 내용과 개인적으로 시험해 본 내용을 정리하면 이렇다.

# macOS 및 Linux에서 설치하기
$ curl -LsSf https://astral.sh/uv/install.sh | sh

# macOS에서 Homebrew를 이용해 설치하기
$ brew install uv

# 윈도에서 설치하기
$ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# pip로 설치하기
$ pip install uv

Rust 기반이기 때문에 굳이 pip로 설치할 이유는 별로 없는 것 같으니 마음에 드는 방법으로 설치하면 될 것 같다. 물론 이 외의 다양한 패키지 매니저에서의 설치를 지원한다.

uv의 간단한 사용법

uv를 깊게 파는 글이 아니기 때문에 사용법에 대해서는 간략하게 정리해 보자.

우선 uv는 최초에는 pip를 대체하는 목적으로 나왔었기 때문에 해당 커맨드를 살펴볼 수 있다.

$ uv pip install requests

아마도 위 커맨드의 더 이상의 소개는 필요 없을 것 같다. 제일 앞에 uv가 붙어있다 뿐이지 기존 pip 커맨드와 거의 동일하다.

이 외에 공식 사이트를 통해 알 수 있겠지만 파이썬의 자주 쓰이는 커맨드를 대신 실행시켜 주는 기능도 갖추고 있다. 예를 들자면 virtualenv 커맨드인 venv가 있다.

$ uv venv my-env

이 외에 아예 대놓고 파이썬 자체를 관리할 수도 있다.

$ uv python install 3.10 3.11 3.12

하지만 역시나 가장 자주 쓰일 만한 기능은 프로젝트 관리 쪽일 것 같다.

$ uv init projectname
Initialized project `projectname` at `/foo/bar/projectname`
$ cd projectname
$ uv add bs4
Resolved 4 packages in 82ms
   Built projectname @ file:///foo/bar/projectname
Prepared 4 packages in 475ms
Uninstalled 1 package in 1ms
Installed 4 packages in 4ms
 + beautifulsoup4==4.12.3
 + bs4==0.0.2
 ~ projectname==0.1.0 (from file:///foo/bar/projectname)
 + soupsieve==2.6
$ echo 'print("Hello World")' > src/projectname/main.py
$ uv run src/projectname/main.py
Hello World

프로젝트 관리 시 자주 사용할 법한 명령만 일부 정리하면 아래와 같을 것 같다:

  • init [NAME]: 프로젝트를 생성한다. NAME을 생략할 경우 현재 디렉터리에 프로젝트를 세팅한다.
  • add PACKAGE: 패키지 의존성 정보를 프로젝트를 추가한다.
  • remove PACKAGE: 패키지 의존성을 프로젝트에서 제거한다.
  • run COMMANDS: 기능이나 스크립트를 venv 환경에서 실행한다.

uv가 지원하는 프로젝트 관리 기능이나 프로젝트 구성으로 볼 때 Poetry를 완전히 대체하는 것도 가능할 것 같다. 심지어 사용법조차도 Poetry와 닮았으니 말이다.

여담 및 관련 링크

사실 제대로 써보지 못한 데다 매뉴얼의 내용도 제법 방대해서 기능은 아주 더 많을 것 같다. 그저 이 글은 소개하는 것이 주요 목적이라 여기까지만 정리하려 한다.

그 외에 상세한 것은 공식저장소 및 매뉴얼을 살펴보자.

 

GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.

An extremely fast Python package and project manager, written in Rust. - astral-sh/uv

github.com

 

uv

uv An extremely fast Python package and project manager, written in Rust. Installing Trio's dependencies with a warm cache. Highlights 🚀 A single tool to replace pip, pip-tools, pipx, poetry, pyenv, virtualenv, and more. ⚡️ 10-100x faster than pip.

docs.astral.sh

 

파이썬의 새로운 의존성 관리자 Poetry

Poetry는 파이썬(Python)용 패키징 겸 의존성 관리를 도와주는 도구입니다. pip와 virtualenv를 합쳐놓은 듯한 pyenv와 비슷하게 생각되는 도구네요. 최근에는 1.0으로 버전이 올라가면서 이제 쓸만해진

seorenn.tistory.com

728x90
반응형

댓글