python uv 사용기(기본사용)

채채·2025년 6월 10일

uv란?

빠르고 현대적인 Python 프로젝트/패키지 매니저임.
Python 가상환경과 의존성 설치를 매우 빠르게 처리할 수 있도록 만든 CLI 툴로 빠르고 효율적인 패키지 관리자라고 보면 됨.

설치

uv를 사용하려면 설치를 해야함.

# macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

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

# pip.
pip install uv

# Homebrew.
brew install uv

기타 다른 설치법은 공식문서 참고
https://docs.astral.sh/uv/getting-started/installation/#shell-autocompletion

터미널에 uv를 쳤을때 이렇게 나오면 설치가 잘 되어 사용할 준비가 된 것임.

uv를 사용하는 방법

uv를 사용하는 방법은 크게 두가지가 있음.
1. 개별로 프로젝트 생성 후 venv, pip만 uv로 관리하기
2. uv자체에서 프로젝트를 생성하기


1. 개별로 프로젝트 생성 후 venv만 uv로 관리하기

-> 이건 기존에 사용하던 pip, venv와 같은 개념으로 사용할 수 있음.

uv pip install은 기존 pip install과 명령어는 거의 동일하지만, 속도와 효율성에서 큰 차이를 보임. 호환성은 유지하면서 성능을 대폭 개선한 버전이라고 볼 수 있음.

주요 차이점 : 속도 (가장 큰 차이)

  • uv pip install:

    • Rust로 구현되어 10~100배 빠름
    • 병렬 다운로드 및 설치
    • 효율적인 캐싱 시스템
  • 기존 pip install:

    • Python으로 구현
    • 순차적 다운로드
    • 상대적으로 느린 처리

사용 방법

pip과 사용법이 거의 유사함.
터미널에서 가상환경 생성 후, 활성화, 필요한 패키지 설치하면 됨

#가상환경 설정
uv venv 가상환경이름(이름을 설정하지 않으면 .venv로 설정됨)

#가상환경 활성화
source venv/Scripts/activate

#필요한 패키지 설치
uv pip install request

#가상환경 비활성화
deactivate 

종속성 패키지들을 공유하려면 원래 쓰던데로 requirements.txt 해도 되고,

#requirements.txt생성
uv pip freeze > requirements.txt

#requirements.txt 읽고 설치하기
uv pip install -r requirements.txt

uv에서 많이 쓰는 pyproject.toml로 만들어서 공유해도 됨.
pyproject.toml로 공유받은 패키지목록은
uv sync 로 동기화 할 수 있음.

pyproject.toml 사용법 링크

# pyproject.toml 작성 예시
[project]
name = "uvp"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "django>=5.2.2",
    "numpy>=2.3.0",
    "pandas>=2.3.0",
]

2. uv자체에서 프로젝트를 생성하기

venv, pip 만 써봤던 초보에게는 새로운 개념이라 이해가 조금 필요했는데, 한번 써보니까 아주 편리하고 빨랐음.

#프로젝트 생성 (프로젝트 이름 : example)
uv init example

#example 폴더로 이동
cd example

#request 패키지 추가
uv add request

#ruff를 개발환경에만 추가
uv add --dev ruff

#종속성 잠금
uv lock

#종속성 통일(설치)
uv sync

uv init으로 프로젝트를 생성하면 다음과 같은 폴더구조가 자동 생성 됨

example/
├── pyproject.toml      # 프로젝트 설정 파일
├── README.md
├── main.py
└── .python-version     # Python 버전 지정

venv도 자동으로 생성되며, 따로 활성화 해줄 필요없이 사용하면 됨.

팀원과 개발환경 맞출때는 깃허브에 커밋할 때 [pyproject.toml, uv.lock] 함께 커밋 후 풀 받아서 uv sync만 하면 됨.

개발도중 새로운 패키지가 추가됐을 때도, 해당 파일들을 커밋, 푸쉬 해주면, 다른 팀원이 풀 받아서 uv sync만 하면 됨.

requirements.txt 하나만 주고받았어도 되는데 주고받을 파일이 두개가 됨


참조

uv공식문서


공부한 부분까지는 아주 편리하고 빨라진것 같아서 uv를 활용해서 프로젝트 하나 진행해봐야겠음.

profile
화이팅

0개의 댓글