Un package Python et un gestionnaire de projet extrêmement rapides, écrits en Rust.
Installation des dépendances de Trio avec un cache chaud.
pip
, pip-tools
, pipx
, poetry
, pyenv
, twine
, virtualenv
, et plus encore.pip
.curl
ou pip
.uv est soutenu par Astral, les créateurs de Ruff.
Installez uv avec nos installateurs autonomes :
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c " irm https://astral.sh/uv/install.ps1 | iex "
Ou, depuis PyPI :
# With pip.
pip install uv
# Or pipx.
pipx install uv
S'il est installé via le programme d'installation autonome, uv peut se mettre à jour vers la dernière version :
uv self update
Consultez la documentation d'installation pour plus de détails et des méthodes d'installation alternatives.
La documentation d'uv est disponible sur docs.astral.sh/uv.
De plus, la documentation de référence sur la ligne de commande peut être consultée avec uv help
.
uv gère les dépendances et les environnements du projet, avec la prise en charge des fichiers de verrouillage, des espaces de travail et bien plus encore, similaire à rye
ou poetry
:
$ uv init example
Initialized project `example` at `/home/user/example`
$ cd example
$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
+ example==0.1.0 (from file:///home/user/example)
+ ruff==0.5.4
$ uv run ruff check
All checks passed!
Consultez la documentation du projet pour commencer.
uv prend également en charge les projets de construction et de publication, même s'ils ne sont pas gérés avec uv. Consultez le guide de publication pour en savoir plus.
uv exécute et installe les outils de ligne de commande fournis par les packages Python, similaires à pipx
.
Exécutez un outil dans un environnement éphémère en utilisant uvx
(un alias pour uv tool run
) :
$ uvx pycowsay ' hello world! '
Resolved 1 package in 167ms
Installed 1 package in 9ms
+ pycowsay==0.0.0.2
"""
------------
< hello world! >
------------
^__^
(oo)_______
(__) )/
||----w |
|| ||
Installez un outil avec uv tool install
:
$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
+ ruff==0.5.4
Installed 1 executable: ruff
$ ruff --version
ruff 0.5.4
Consultez la documentation des outils pour commencer.
uv installe Python et permet de basculer rapidement entre les versions.
Installez plusieurs versions de Python :
$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
+ cpython-3.10.14-macos-aarch64-none
+ cpython-3.11.9-macos-aarch64-none
+ cpython-3.12.4-macos-aarch64-none
Téléchargez les versions Python selon vos besoins :
$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python [email protected] -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>
Utilisez une version spécifique de Python dans le répertoire courant :
$ uv python pin [email protected]
Pinned `.python-version` to `[email protected]`
Consultez la documentation d'installation de Python pour commencer.
uv gère les dépendances et les environnements pour les scripts à fichier unique.
Créez un nouveau script et ajoutez des métadonnées en ligne déclarant ses dépendances :
$ echo ' import requests; print(requests.get("https://astral.sh")) ' > example.py
$ uv add --script example.py requests
Updated `example.py`
Ensuite, exécutez le script dans un environnement virtuel isolé :
$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
Consultez la documentation des scripts pour commencer.
uv fournit un remplacement immédiat pour les commandes courantes pip
, pip-tools
et virtualenv
.
uv étend ses interfaces avec des fonctionnalités avancées, telles que les remplacements de versions de dépendances, les résolutions indépendantes de la plate-forme, les résolutions reproductibles, les stratégies de résolution alternatives, etc.
Migrez vers uv sans modifier vos flux de travail existants - et bénéficiez d'une accélération 10 à 100x - avec l'interface uv pip
.
Compilez les exigences dans un fichier d'exigences indépendant de la plate-forme :
$ uv pip compile docs/requirements.in
--universal
--output-file docs/requirements.txt
Resolved 43 packages in 12ms
Créez un environnement virtuel :
$ uv venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
Installez les exigences verrouillées :
$ uv pip sync docs/requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
+ babel==2.15.0
+ black==24.4.2
+ certifi==2024.7.4
...
Consultez la documentation de l'interface pip pour commencer.
Voir le document de support de la plateforme uv.
Voir le document de politique de gestion des versions d'uv.
Nous sommes passionnés par le soutien aux contributeurs de tous niveaux d’expérience et serions ravis de vous voir vous impliquer dans le projet. Consultez le guide de contribution pour commencer.
Le résolveur de dépendances d'uv utilise PubGrub sous le capot. Nous remercions les responsables de PubGrub, en particulier Jacob Finkelman, pour leur soutien.
L'implémentation Git d'uv est basée sur Cargo.
Certaines des optimisations d'uv sont inspirées de l'excellent travail que nous avons vu dans pnpm, Orogene et Bun. Nous avons également beaucoup appris de Posy de Nathaniel J. Smith et avons adapté son trampoline pour le support Windows.
uv est sous licence sous l'un des deux
à votre choix.
Sauf indication contraire explicite de votre part, toute contribution intentionnellement soumise pour inclusion dans uv par vous, telle que définie dans la licence Apache-2.0, sera soumise à une double licence comme ci-dessus, sans aucun terme ou condition supplémentaire.