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
μ μ¬μ©νλ©΄ κ΅³μ΄ κ°μνκ²½μ νμ±ννμ§ μμλ λλ€.