uv add λͺ
λ Ήμ΄λ pyproject.toml νμΌμ΄ μμ΄μΌ μλν©λλ€. νμ¬ λλ ν 리μ νλ‘μ νΈκ° μ΄κΈ°νλμ§ μμ μνμμ.
ν΄κ²° λ°©λ²:
# 1. uv νλ‘μ νΈ μ΄κΈ°ν (pyproject.toml μμ±)
uv init
# 2. κ·Έ λ€μ ν¨ν€μ§ μΆκ°
uv add django djangorestframework
λλ uv init μμ΄ λ°λ‘ νλ €λ©΄:
# pip λ°©μμΌλ‘ μ§μ μ€μΉ
uv pip install django djangorestframework
λ λ°©λ²μ μ°¨μ΄:
| λ°©λ² | νΉμ§ |
|---|---|
uv init β uv add | pyproject.tomlμ μμ‘΄μ± κΈ°λ‘λ¨ (κΆμ₯) |
uv pip install | κ°μνκ²½μλ§ μ€μΉ, κΈ°λ‘ μμ |
Django νλ‘μ νΈλ₯Ό μ λλ‘ κ΄λ¦¬νλ €λ©΄ uv init ν uv addλ₯Ό μ°λ κ² μ’μ΅λλ€. νΉμ ~/HY_leverage ν΄λκ° μ΄λ―Έ Django νλ‘μ νΈ κ΅¬μ‘°λΌλ©΄ pyproject.tomlλ§ μλ κ±΄μ§ νμΈν΄λ³Όκ²μ:
uv venv # κΈ°λ³Έ (.venv ν΄λμ μμ±)
uv venv myenv # μ΄λ¦ μ§μ
uv venv --python 3.11 # Python λ²μ μ§μ
uv venv myenv --python 3.12
# macOS / Linux
source .venv/bin/activate
# Windows (CMD)
.venv\Scripts\activate.bat
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
deactivate
uv pip install pandas # ν¨ν€μ§ μ€μΉ
uv pip install -r requirements.txt # requirements.txtλ‘ μ€μΉ
uv pip uninstall pandas # ν¨ν€μ§ μ κ±°
uv pip list # μ€μΉλ ν¨ν€μ§ λͺ©λ‘
uv pip freeze # requirements νμμΌλ‘ μΆλ ₯
uv run python script.py # μλμΌλ‘ venv κ°μ§ ν μ€ν
uv run --with pandas python script.py # νΉμ ν¨ν€μ§μ ν¨κ» μ€ν
uv init myproject # μ νλ‘μ νΈ μμ±
uv add pandas # μμ‘΄μ± μΆκ°
uv sync # μμ‘΄μ± λκΈ°ν
ν:
uvλpipλ³΄λ€ 10~100λ°° λΉ λ₯΄λ©°,uv runμ μ¬μ©νλ©΄ κ°μνκ²½ νμ±ν μμ΄λ λ°λ‘ μ€νν μ μμ΄ νΈλ¦¬ν©λλ€.
νλ‘μ νΈλ§λ€ λ²μ μ΄ λ€λ₯Ό μ μλ κ²λ€
# νλ μμν¬ / λΌμ΄λΈλ¬λ¦¬
uv add fastapi django flask
uv add pandas numpy scikit-learn
# κ°λ° λꡬ (νλ‘μ νΈ μ’
μ)
uv add --dev pytest black ruff mypy
uv add --dev ipykernel jupyter # μ΄ νλ‘μ νΈμ© 컀λ
κΈ°μ€: pyproject.toml λλ requirements.txtμ κΈ°λ‘λμ΄μΌ ν κ²λ€
μ΄λ νλ‘μ νΈμμλ λμΌνκ² μ°λ λꡬλ€
# uv μ체
curl -LsSf https://astral.sh/uv/install.sh | sh
# Python λ²μ κ΄λ¦¬
uv python install 3.11
uv python install 3.12
# μ μ CLI λꡬ
pipx install cookiecutter # νλ‘μ νΈ ν
νλ¦Ώ
pipx install pre-commit # git ν
κ΄λ¦¬
κΈ°μ€: νΉμ νλ‘μ νΈκ° μλλΌ κ°λ° νκ²½ μ체μ νμν κ²λ€
| λꡬ | κΆμ₯ μμΉ | μ΄μ |
|---|---|---|
black, ruff | κ°μνκ²½ μ | νλ‘μ νΈλ§λ€ λ²μ κ³ μ νμ |
pytest | κ°μνκ²½ μ | ν μ€νΈ λμ μ½λμ κ°μ νκ²½ νμ |
jupyter | κ°μνκ²½ μ | 컀λμ΄ νλ‘μ νΈ ν¨ν€μ§λ₯Ό λ΄μΌ ν¨ |
pre-commit | κΈλ‘λ² (pipx) | μ¬λ¬ νλ‘μ νΈ κ³΅ν΅ |
git | κΈλ‘λ² (μμ€ν ) | λΉμ°ν μ μ |
uv, pyenv | κΈλ‘λ² (μμ€ν ) | νκ²½ κ΄λ¦¬ λꡬ μ체 |
"μ΄ ν¨ν€μ§κ° μμΌλ©΄ νλ‘μ νΈκ° μ λμκ°λ€" β κ°μνκ²½ μ
"κ°λ° λ¨Έμ μ΄λ©΄ νμ μμ΄μΌ νλ€" β κ°μνκ²½ λ° (κΈλ‘λ²)
uv add λͺ
λ Ήμ΄λ pyproject.toml νμΌμ΄ μμ΄μΌ μλν©λλ€. νμ¬ λλ ν 리μ νλ‘μ νΈκ° μ΄κΈ°νλμ§ μμ μνμμ.
ν΄κ²° λ°©λ²:
# 1. uv νλ‘μ νΈ μ΄κΈ°ν (pyproject.toml μμ±)
uv init
# 2. κ·Έ λ€μ ν¨ν€μ§ μΆκ°
uv add django djangorestframework
λλ uv init μμ΄ λ°λ‘ νλ €λ©΄:
# pip λ°©μμΌλ‘ μ§μ μ€μΉ
uv pip install django djangorestframework
λ λ°©λ²μ μ°¨μ΄:
| λ°©λ² | νΉμ§ |
|---|---|
uv init β uv add | pyproject.tomlμ μμ‘΄μ± κΈ°λ‘λ¨ (κΆμ₯) |
uv pip install | κ°μνκ²½μλ§ μ€μΉ, κΈ°λ‘ μμ |
Django νλ‘μ νΈλ₯Ό μ λλ‘ κ΄λ¦¬νλ €λ©΄ uv init ν uv addλ₯Ό μ°λ κ² μ’μ΅λλ€. νΉμ ~/HY_leverage ν΄λκ° μ΄λ―Έ Django νλ‘μ νΈ κ΅¬μ‘°λΌλ©΄ pyproject.tomlλ§ μλ κ±΄μ§ νμΈν΄λ³Όκ²μ:
ls ~/HY_leverage
κ²°κ³Όλ₯Ό 보μ¬μ£Όμλ©΄ μν©μ λ§κ² μλ΄ν΄λ릴κ²μ!
script.py νμΌμ΄ μ‘΄μ¬νμ§ μμμ μκΈ°λ μ€λ₯μμ! νμΌμ λ¨Όμ λ§λ€μ΄μΌ ν©λλ€.
# script.py νμΌ μμ±
touch script.py
# λλ λ΄μ©κ³Ό ν¨κ» λ°λ‘ μμ±
echo "print('hello')" > script.py
# κ·Έ λ€μ μ€ν
uv run python script.py
νΉμ νμΌ μ΄λ¦μ΄ λ€λ₯Έ κ±° μλκΉμ? νμ¬ ν΄λμ λκ° μλμ§ νμΈν΄λ³΄μΈμ:
ls ~/HY_leverage