Hopp til hovedinnhold
  1. Posts/
  2. Python/

uv - Python pakkebehandler

·2 min

Om
#

uv er en svært rask Python pakkebehandler og prosjektverktøy laget av Astral, skrevet i Rust. Det erstatter verktøy som pip, pip-tools, virtualenv og pyenv med ett enkelt verktøy.

Installering
#

curl -LsSf https://astral.sh/uv/install.sh | sh

Se installasjonsdokumentasjonen for andre metoder (pip, Homebrew, Windows m.m.).

Bruk
#

Prosjektbasert arbeidsflyt
#

uv init myproject          # opprett nytt prosjekt
uv add requests            # legg til avhengighet (oppdaterer pyproject.toml og uv.lock)
uv sync                    # installer alle avhengigheter fra uv.lock
uv run script.py           # kjør script i prosjektets miljø

uv.lock låser eksakte versjoner for reproduserbare installasjoner – commit denne til versjonskontroll.

Python-versjoner
#

uv erstatter pyenv med innebygd Python-håndtering:

uv python install 3.12     # installer Python-versjon
uv python pin 3.12         # pin versjon for prosjektet (.python-version)
uv python list             # vis installerte versjoner

Flere versjoner er nyttig i CI/CD for å teste kompatibilitet:

# .github/workflows/test.yml
strategy:
  matrix:
    python-version: ["3.11", "3.12", "3.13"]
steps:
  - uses: astral-sh/setup-uv@v5
  - run: uv python install ${{ matrix.python-version }}
  - run: uv sync --frozen
  - run: uv run pytest

pip-kompatibilitetsmodus
#

For prosjekter uten pyproject.toml eller ved migrering:

uv venv                    # opprett .venv i gjeldende mappe
uv pip install requests    # installer pakke
uv pip install -r requirements.txt

Midlertidige pakker
#

Kjør et script med en pakke uten å legge den til i prosjektet:

uv run --with requests script.py       # én pakke
uv run --with requests --with rich script.py  # flere pakker

Kjør et CLI-verktøy uten å installere det permanent (uvx = uv tool run):

uvx ruff check .           # kjør ruff midlertidig
uvx black .                # kjør black midlertidig

uv tool – installer CLI-verktøy globalt
#

For verktøy du bruker ofte, installer dem permanent med uv tool (tilsvarende pipx):

uv tool install ruff       # installer verktøy globalt
uv tool upgrade ruff       # oppgrader verktøy
uv tool list               # vis installerte verktøy

Lenker
#

Se også Python 101 for grunnleggende bruk av pip og virtuelle miljøer.