uv λž€?


uv λž€ pip, pyenv, virtualenv 등을 λŒ€μ²΄ν•˜κΈ° μœ„ν•΄ 24년에 μΆœμ‹œλœ Python νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €λ‹€. Rust 둜 μž‘μ„±λ˜μ–΄ pip 보닀 10λ°°μ—μ„œ λ§Žκ²ŒλŠ” 100λ°°κΉŒμ§€ λΉ λ₯Έ μ„±λŠ₯을 보여쀀닀.

uv μ„€μΉ˜ (mac/linux)


brew install uv
uv --version

Python μ„€μΉ˜


uv python install 3.13
uv python list

ν”„λ‘œμ νŠΈ μ΄ˆκΈ°ν™”


uv init
# or
uv init project-name
project-name/
β”œβ”€β”€ .python-version
β”œβ”€β”€ main.py
β”œβ”€β”€ pyproject.toml
└── README.md

ν”„λ‘œμ νŠΈλ₯Ό μ΄ˆκΈ°ν™”ν•˜λ©΄ μœ„μ™€ 같은 νŒŒμΌλ“€μ΄ μƒμ„±λœλ‹€.

.python-version

3.13

.python-version νŒŒμΌμ€ ν•΄λ‹Ή 디렉토리(및 ν•˜μœ„ 디렉토리) λ‚΄μ—μ„œ μ‚¬μš©ν•  Python λŸ°νƒ€μž„ 버전을 κ³ μ •ν•˜κΈ° μœ„ν•œ 메타데이터 νŒŒμΌμ΄λ‹€. μ›λž˜ pyenv κ°€ μΈμ‹ν•˜λŠ” ν˜•μ‹μ΄μ§€λ§Œ uv μ—­μ‹œ 이λ₯Ό κ°μ§€ν•˜μ—¬ λͺ…μ‹œλœ 버전을 μš°μ„  μ‹œλ„ν•œλ‹€. λ‚΄μš©μ€ 맀우 λ‹¨μˆœν•˜λ©° 보톡 ν•œ μ€„λ‘œ κ΅¬μ„±λœλ‹€.

pyproject.toml

[project]
name = "python-study"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []

pyproject.toml 은 Python ν”„λ‘œμ νŠΈμ˜ 메타데이터, μ˜μ‘΄μ„±, λΉŒλ“œ λ°±μ—”λ“œ 등을 μ„ μ–Έν•˜λŠ” ν‘œμ€€ νŒŒμΌμ΄λ‹€. uv λŠ” 이 νŒŒμΌμ„ 단일 μ§„μ‹€ μ†ŒμŠ€λ‘œ μ‚¬μš©ν•˜μ—¬ μ˜μ‘΄μ„± 해석과 lock 생성(uv.lock)을 μˆ˜ν–‰ν•œλ‹€.

κ°€μƒν™˜κ²½ 생성


uv venv --python 3.13
source .venv/bin/activate
project-name/
β”œβ”€β”€ .venv/
β”œβ”€β”€ .python-version
β”œβ”€β”€ main.py
β”œβ”€β”€ pyproject.toml
└── README.md

κ°€μƒν™˜κ²½μ„ μƒμ„±ν•˜λ©΄ .venv κ°€ μƒμ„±λœλ‹€. κ°€μƒν™˜κ²½μ„ μƒμ„±ν•˜μ§€ μ•Šκ³  uv add λ₯Ό μ‚¬μš©ν•΄λ„ κ°€μƒν™˜κ²½μ΄ μžλ™μœΌλ‘œ μƒμ„±λœλ‹€.

νŒ¨ν‚€μ§€ 관리


uv add pandas
uv remove pandas
project-name/
β”œβ”€β”€ .venv/
β”œβ”€β”€ .python-version
β”œβ”€β”€ main.py
β”œβ”€β”€ pyproject.toml
β”œβ”€β”€ README.md
└── uv.lock

uv add pandas 와 같이 μ‹€ν–‰ν•˜λ©΄ pyproject.toml 의 dependencies μ„Ήμ…˜μ„ μ—…λ°μ΄νŠΈν•˜κ³ , ν•΄κ²°λœ μ •ν™•ν•œ 버전은 uv.lock 에 κΈ°λ‘λœλ‹€. uv.lock 은 μž¬ν˜„ κ°€λŠ₯ν•œ(Repeatable) μ„€μΉ˜λ₯Ό μœ„ν•΄ μ»€λ°‹ν•˜λŠ” 것이 ꢌμž₯λœλ‹€.

Python μ‹€ν–‰


uv run main.py

uv run 을 μ‚¬μš©ν•˜λ©΄ ꡳ이 κ°€μƒν™˜κ²½μ„ ν™œμ„±ν™”ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.