Un script de Python es pot executar en molts entorns diferents.
Introducció
uv s’encarrega de gestionar tot el que té a veure amb la gestió de Python.
Instal·la uv:
Utilitza irm per descarregar l’script i executa’l amb iex:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"curl -LsSf https://astral.sh/uv/install.sh | sh👉 Tanca i torna a obrir el terminal!
Si no coneixes Python, primer fes la primera activitat de Python: Computació 😺
uv run
Per executar codi Python necessites tenir instal·lada una versió de Python.
Què és una versió? 🤔
Una versió de Python està composta per un intèrpret de Python (que té la funció d’interpretar el codi que ha escrit i executar-lo a l’ordinador), la biblioteca estàndard i altres fitxers de suport.
En aquest enllaç tens totes les versions de Python que pots utilitzar amb uv: Status of Python versions.
Pots executar directament un intèrpret de Python amb uv run.
Per exemple pots iniciar una sessió interactiva:
uv run pythonCom que no has especificat una versió concreta de Python uv utilitza la versió més recent …
I si no està instal·lada, la baixa de manera automàtica 😺!!
També pots executar un script Python amb uv:
notepad hello.pyuv run hello.pySi has d’executar un script de Python amb una versió concreta, la pots especificar amb -p (o --python):
uv run -p 3.9 python --versionPython 3.9.23uv python
Amb uv python pots gestionar les diferents versions de Python que uv ha instal·lat en el teu sistema.
uv python list
En qualsevol moment pots veure totes les versions disponibles de Python:
uv python listPots veure que per defecte uv utilitza les distribucions de CPython (en parlem més endavant).
cpython-3.14.0b4-windows-x86_64-none <download available>cpython-3.14.0b4+freethreaded-windows-x86_64-none <download available>cpython-3.13.5-windows-x86_64-none C:\Users\david\AppData\Roaming\uv\python\cpython-3.13.5-windows-x86_64-none\python.execpython-3.13.5-windows-x86_64-none <download available>cpython-3.13.5+freethreaded-windows-x86_64-none <download available>cpython-3.12.11-windows-x86_64-none <download available>cpython-3.11.13-windows-x86_64-none <download available>cpython-3.10.18-windows-x86_64-none <download available>cpython-3.9.23-windows-x86_64-none C:\Users\david\AppData\Roaming\uv\python\cpython-3.9.23-windows-x86_64-none\python.execpython-3.9.23-windows-x86_64-none <download available>cpython-3.8.20-windows-x86_64-none <download available>pypy-3.11.13-windows-x86_64-none <download available>pypy-3.10.16-windows-x86_64-none <download available>pypy-3.9.19-windows-x86_64-none <download available>pypy-3.8.16-windows-x86_64-none <download available>graalpy-3.11.0-windows-x86_64-none <download available>graalpy-3.10.0-windows-x86_64-none <download available>Si només vols veure les versions que tens instal·lades, pots utilitzar l’ordre el flag --only-installed:
uv python list --only-installedcpython-3.13.5-windows-x86_64-none C:\Users\david\AppData\Roaming\uv\python\cpython-3.13.5-windows-x86_64-none\python.execpython-3.9.23-windows-x86_64-none C:\Users\david\AppData\Roaming\uv\python\cpython-3.9.23-windows-x86_64-none\python.exeuv python upgrade
Python té diverses versions disponibles, i cada versió es va actualitzant amb un “patch release”.
Per això, cpython-3.9.23 és el “patch release” 23 de la versió 3.9.
Per actualitzar una versió, utilitza l’ordre uv python upgrade:
uv python upgrade 3.9 --previewCom que l’acabes d’instal·lar està actualitzada, però passat un temps 👻 …
També les pots actualitzar totes a la vegada:
uv python upgrade --previewAll versions already on latest supported patch releaseuv python uninstall
En qualsevol moment pot desinstal·lar una versió de Python per recuperar espai en el teu sistema:
uv python uninstall 3.9Searching for Python versions matching: Python 3.9Uninstalled Python 3.9.23 in 543ms - cpython-3.9.23-windows-x86_64-none (python3.9.exe)Distribucions
uv utilitza distribucions de Python completament portables que es poden instal·lar de manera local, i com has vist abans, et permet tenir diferents versions de Python en el teu sistema.
Per defecte, uv utilitza la distribució CPython, però existeixen altres distribucions de Python que pots utilitzar com són PyPy i Pyodide.
CPython
Com que Python no publica binaris oficials distribuïbles de CPython, uv utilitza, en canvi, distribucions pre-compilades del projecte python-build-standalone d’Astral. p
Aquestes distribucions tenen algunes particularitats de comportament, generalment com a conseqüència de la portabilitat; consulta la documentació de particularitats de python-build-standalone per a més detalls.
A més, algunes plataformes poden no estar suportades (per exemple, les distribucions encara no estan disponibles per a Linux musl en ARM).
PyPy
Les distribucions PyPy són proporcionades pel projecte PyPy.
De mitjana, PyPy és aproximadament 3 vegades més ràpid que CPython, però no tens disponible la versió més recent.
uv run -p pypy python --versionPython 3.11.13 (413c9b7f57f5, Jul 03 2025, 18:04:37)[PyPy 7.3.20 with MSC v.1941 64 bit (AMD64)]Com que a tothom li agrada escriure com menys millor, pots utilitzar l’abreviatura de pypy que és pp:
uv run -p pp python --versionPython 3.11.13 (413c9b7f57f5, Jul 03 2025, 18:04:37)[PyPy 7.3.20 with MSC v.1941 64 bit (AMD64)]Pyodide
Les distribucions Pyodide són proporcionades pel projecte Pyodide.
Pyodide és una adaptació de CPython per a la plataforma WebAssembly / Emscripten que permet executar Python en el navegador amb micropip
De moment només està disponible la gestió automàtica en Linux
GraalPy
GraalPy és un runtime de Python d’alt rendiment embegut per a Java:
- Carrega i utilitza paquets de Python directament a Java
- Compatible amb molts paquets de Python, incloent-hi llibreries populars d’IA i Data Science
- El compilador JIT Graal compila Python per aconseguir velocitat de codi natiu
gp és una abreviatura de graalpy:
uv run -p gp python --versionGraalPy 3.11.7 (Oracle GraalVM Native 24.2.1)Actvitats
Executa un interpret interactiu de python amb la versió 3.10 de la distribució PyPy:
uv run -p pp-3.10 pythonScript
A Python script is a file intended for standalone execution, e.g., with python hello.py.
Utilitzar uv per executar scripts assegura que les dependències dels scripts es gestionen sense haver de gestionar manualment els entorns.
Executar un script sense dependències
Crea un fitxer hello.py
print("Hello world")Com que aquest script no té dependències externes, pots executar-lo amb uv run:
uv run hello.pyDe manera similar, si el teu script depèn d’un mòdul de la biblioteca estàndard, no cal fer res més:
import datetime as dt
print(dt.datetime.now())uv run hello.pyExecutar un script amb dependències
Quan el teu script requereix altres paquets, aquests s’han d’instal·lar en l’entorn en què s’executa l’script.
uv prefereix crear aquests entorns sota demanda en lloc d’utilitzar un entorn virtual de llarga durada amb dependències gestionades manualment.
Això requereix la declaració explícita de les dependències que són necessàries per a l’script.
En general, es recomana utilitzar un uv - Projecte o metadades en línia per declarar les dependències, però uv també permet sol·licitar dependències per invocació.
A continuació crea l’script jokes.py.
import pyjokes
print(pyjokes.get_joke())PyJokes són acudits d’una línia per a programadors (acudits com a servei)
Aquest script necessita la biblioteca pyjokes, per tant,
uv run jokes.pyTraceback (most recent call last): File "C:\Users\david\Workspace\tmp\jokes.py", line 1, in <module> import pyjokesModuleNotFoundError: No module named 'pyjokes'Digues a uv que utilitzi la dependència amb l’opció --with:
uv run --with pyjokes jokes.pyInstalled 1 package in 60msHow many programmers does it take to change a lightbulb? None, that's a hardware problemTambé ss poden sol·licitar múltiples dependències repetint l’opció --with.
😹
Pyjokes permet molts idiomes, i té múltiples categories d’acudits tal com s’explica a Pyjokes.
Prova algunes, per exemple millor en espanyol!
Ja sabem que potser no li trobes la gràcia a aquests acudits encara, però quan siguis un programador riuras (o ploraràs molt).
import pyjokes
print(pyjokes.get_joke("es"))Crear un script de Python
Python ha afegit recentment un format estàndard per a metadades en línia d’scripts.
Permet seleccionar versions de Python i definir dependències.
Utilitza uv init --script per inicialitzar scripts amb les metadades en línia:
uv init --script color.py --python 3.14Declarar dependències d’script
El format de metadades en línia permet declarar les dependències d’un script dins del mateix script.
uv permet afegir i actualitzar metadades en línia d’script per tu.
Utilitza uv add --script per declarar les dependències de l’script:
uv add --script jokes.py 'pyjokes'Això afegirà una secció d’script a la part superior de l’script declarant les dependències utilitzant TOML:
# /// script# requires-python = ">=3.13"# dependencies = [# "pyjokes",# ]# ///import pyjokes
print(pyjokes.get_joke("es"))uv crearà automàticament un entorn amb les dependències necessàries per executar l’script
uv run jokes.pyCamarero: ¿Le gustaría tomar un té o un café? Programador: SíPENDENT
uv tool
uv includes a dedicated interface for interacting with tools. Tools can be invoked without installation using uv tool run, in which case their dependencies are installed in a temporary virtual environment isolated from the current project.
Because it is very common to run tools without installing them, a uvx alias is provided for uv tool run — the two commands are exactly equivalent. For brevity, the documentation will mostly refer to uvx instead of uv tool run.
Tools can also be installed with uv tool install, in which case their executables are available on the PATH — an isolated virtual environment is still used, but it is not removed when the command completes.
PENDENT