Êtes-vous fatigué de jongler avec plusieurs outils comme pip, virtualenv, conda, poésie et pyenv juste pour garder vos environnements et dépendances Python sous contrôle ? Vous n'êtes pas seul ! La gestion de projets Python peut sembler un casse-tête, en particulier avec tous les différents gestionnaires de packages et outils avec lesquels vous devez vous battre.
Entrez uv — le Universal Virtualenv. Considérez-le comme un gestionnaire de packages à guichet unique conçu pour rationaliser et accélérer votre processus de développement Python.
uv s'inspire de Rye, un autre gestionnaire d'emballage moderne, pour unifier les meilleures fonctionnalités de pip, pip-tools, pyenv, virtualenv et poésie. Construit avec Rust, uv est non seulement rapide mais très efficace, simplifiant tout, de la gestion des dépendances à la création d'environnements virtuels.
En un mot, uv est une question de consolidation. Pourquoi basculer entre plusieurs outils lorsque vous pouvez vivre une expérience unifiée ? Il vise à supprimer les frictions liées au développement Python, en vous offrant un moyen plus cohérent et plus rapide de gérer vos projets. Et ça va aussi très vite ! Cela ouvre de nouvelles portes, pour un management dynamique
L'une des fonctionnalités les plus intéressantes d'uv est la possibilité d'ajouter des dépendances directement dans votre script Python. Imaginez que vous ayez un script simple comme celui-ci :
# app.py import requests from rich.pretty import pprint response = requests.get("https://peps.python.org/api/peps.json") data = response.json() pprint([(k, v["title"]) for k, v in data.items()][:10])
Exécuter ce script signifie généralement configurer un environnement virtuel et installer les dépendances manuellement. Avec uv, vous pouvez intégrer toutes vos dépendances directement dans le script, le rendant autonome et partageable :
$ uv add --script app.py 'requests<3' 'rich'
Cela ajoute des métadonnées au fichier de script :
# /// script # dependencies = [ # "requests<3", # "rich", # ] # ///
Et c'est tout ! Vous pouvez partager ce fichier avec quelqu'un d'autre, et il peut simplement exécuter :
$ uv run app.py
Et voilà : aucune configuration externe requise ! Tout cela grâce à la rapidité et à l'efficacité des UV.
Par défaut, uv nécessite que les packages soient installés dans des environnements virtuels pour garder votre système propre et éviter les conflits entre différents projets. Créer un environnement virtuel avec uv est simple :
$ uv venv
Cela créera un répertoire .venv contenant l'environnement isolé. Si vous souhaitez spécifier un répertoire personnalisé ou une version Python, vous pouvez faire :
$ uv venv my_env --python 3.9
L'environnement est prêt à être utilisé, et uv le détectera automatiquement pour toutes vos commandes, comme l'installation de packages ou l'exécution de scripts.
Utilisez uv add : Lorsque vous souhaitez ajouter des dépendances au fichier pyproject.toml de votre projet. C'est mieux lorsque vous développez un projet et que vous souhaitez garder une trace de toutes les dépendances, ce qui rend le projet facilement partageable et reproductible. Nous en parlerons dans le prochain article, restez à l'écoute !
$ uv add fastapi
Cela mettra à jour votre pyproject.toml et verrouillera la version dans uv.lock.
Utilisez uv pip install : Lorsque vous souhaitez installer des packages pour une utilisation rapide sans modifier le fichier du projet, ou pour des outils globaux où vous n'avez pas besoin de les suivre dans un pyproject.toml. Considérez UV pip comme une installation immédiate et ponctuelle.
$ uv pip install requests
Choisir la bonne commande garantit que votre projet est correctement géré et facile à partager ou à déployer.
Nous sommes tous passés par là : votre code fonctionne aujourd'hui, puis s'arrête demain car un package est mis à jour. Avec uv, vous pouvez éviter cela en verrouillant les versions des packages pour garantir la cohérence et la reproductibilité :
[tool.uv] exclude-newer = "2023-10-16T00:00:00Z"
De cette façon, même si de nouvelles versions de vos dépendances sortent, votre projet reste stable. Parfait pour les projets à long terme où vous ne pouvez pas vous permettre de surprises !
De nombreux développeurs doivent travailler sur plusieurs projets qui nécessitent différentes versions de Python. uv rend le changement de version aussi simple que :
$ uv python install 3.8 3.9 3.10
Une fois les versions installées, le basculement entre elles est fluide :
$ uv run --python 3.10 app.py
Et si vous souhaitez verrouiller une version spécifique pour un projet :
$ uv python pin 3.9
Plus besoin de jongler avec les commandes pyenv : uv s'occupe de tout le gros du travail pour vous.
uv provides a pip-like experience but with turbocharged performance. Installing packages is straightforward:
$ uv pip install flask
Need to add optional dependencies or install directly from a GitHub repo? No sweat:
$ uv pip install 'torch>=1.10.0' "git+https://github.com/astral-sh/ruff"
No more waiting around for slow installations—uv gets the job done fast and effectively.
Whether you're linting code or formatting files, uv makes installing CLI tools easy:
Globally:
$ uv tool install ruff
Locally within a Project:
$ uv add ruff
Run Ephemeral Commands without Installing Globally:
$ uvx black my_code.py
Say goodbye to package conflicts and environment pollution—just run your tools whenever and wherever you need them.
If you're looking to supercharge your Python development and want to stop wrestling with multiple tools, uv is your answer. With its streamlined commands, reproducible environments, and efficient package management, uv makes Python development a pleasure rather than a chore.
Ready to take uv for a spin? ? Start today and experience a better way to manage your Python projects.
Stay tuned for Part 2, where we'll dive deeper into advanced features like leveraging pyproject.toml, handling global vs. local tool installations, and how uv can be your best friend when managing complex environments.
Happy coding! ?✨
For more details and full documentation, check out uv documentation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!