uv run în Python

Rulează un script sau o comandă în mediul proiectului, după ce verifică că pachetele instalate se potrivesc cu uv.lock.

Sintaxă
uv run script.py
uv run python -c "cod"
uv run pytest
uv run --with pachet script.py

Ce face uv run

uv run main.py rulează scriptul cu Python-ul din .venv-ul proiectului, fără să activezi mediul. Înainte de rulare, uv verifică dacă mediul se potrivește cu pyproject.toml și uv.lock și îl actualizează dacă e nevoie (de exemplu după ce un coleg a adăugat o dependență). Dacă .venv nu există, îl creează.

Merge și pentru comenzi instalate în mediu: uv run pytest, uv run python, uv run ruff check. Cu --with pachet adaugi un pachet doar pentru rularea aceea, fără să-l scrii în proiect. Un script cu metadate în comentariul de la început (creat cu uv init --script sau uv add --script) primește un mediu temporar cu dependențele lui.

Parametri

Parametru Descriere
comanda Un fișier .py sau o comandă din mediu, urmate de argumentele ei.
--with pachet Pachet în plus, doar pentru această rulare.
--python versiune Rulează cu altă versiune de Python.
--no-sync Nu verifica și nu actualiza mediul înainte de rulare.
--no-dev Nu instala grupul dev.

Ce returnează

Ieșirea programului rulat; codul de ieșire este cel al programului.

Exemple

Exemplul 1: Un script care folosește o dependență a proiectului

Python-ul din .venv găsește requests, deși Python-ul sistemului nu îl are instalat.

uv run python -c "import requests; print(requests.__version__)"
python3 -c "import requests"   # Python-ul sistemului, fără uv

Ieșire în terminal

2.34.2
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

Exemplul 2: Testele proiectului

uv run pytest -q

Ieșire în terminal

...                                                                      [100%]
3 passed in 0.02s

Greșeli frecvente

  • Scrii uv run main.py când fișierul nu există: uv nu găsește ce să ruleze și afișează error: Failed to spawn: main.py. Verifică numele și folderul.
  • Rulezi python script.py în loc de uv run script.py, cu mediul neactivat, și primești ModuleNotFoundError.
  • Folosești --with pentru un pachet de care programul are nevoie mereu. Adaugă-l cu uv add, altfel nu apare în proiect.

Comenzi înrudite

  • uv add și uv remove: Adaugă sau elimină o dependență: actualizează pyproject.toml, uv.lock și mediul .venv dintr-o singură comandă.
  • uv sync și uv.lock: Aduce mediul .venv exact la versiunile din uv.lock: instalează ce lipsește și șterge ce nu mai e în proiect.
  • uv init: Creează un proiect Python nou cu uv: pyproject.toml, .python-version, README și un depozit Git.
  • python -m venv: Creează un mediu virtual: un folder cu propriul Python și propriile pachete, separat de restul sistemului.