Setup uv TD info

De WikiBR
Révision datée du 21 février 2025 à 16:23 par Jean-nicolas.strauss (discussion | contributions) (Création page stockage salles de TP et installation uv)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Gérer son stockage sur les ordis des labos

C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre Disk quota exceeded (os error 122). Ce qu'il se passe c'est qu'il y a 30Go partagés par tous les ordis des salles de TP, donc si vous mettez un fichier dans ~/foo/bar vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier .ssh et le dossier .config. Cependant sur chaque ordi est présent un /Data de très grande taille ou tout le monde peut travailler.

Pour résoudre le problème de manque de place plusieurs étapes

Identifier ce qui prend de la place

du -hc ~/ 2>/dev/null | grep -E '^([0-9]|,|\.)+G'

Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.

Si c'est pip qui prend trop de place on peut exécuter

pip cache purge

pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.

Mais plus puissant que pip est uv.

Introduction

uv est un "An extremely fast Python package and project manager, written in Rust." Il permet de gérer plusieurs versions de python, plusieurs versions des paquets, des environnements de dev, de prod, le tout en étant incomparablement plus rapide que vanilla pip ou que poetry... Bref je [l'auteur de ce tuto, ndlr] suis fan.

Installation de uv

Pour installer UV :

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

C'est tout

Initialisation d'un Projet avec uv

Pour initialiser un nouveau projet avec uv, suivez ces étapes :

mkdir projet-de-ouf
cd projet-de-ouf
uv init

uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le pyproject.toml qui est son fichier de configuration, qu'il gère automatiquement.

Ajout d'un paquet au venv

Oubliez pip install faites place à uv add, par expemple pour ajouter pytorch

uv add torch

Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le pyproject.toml et voir que le paquet à bien été ajouté avec la bonne version. Attention : le venv n'est pas créé jusqu'à ce que vous demandiez à uv d'exécuter quelque chose comme le hello.py qu'il crée automatiquement ou juste python

uv run python
uv run python hello.py

Mais pas besoin de créer le venv pour configurer tous les paquets

Changement de la version de python

uv créé automatiquement un .python-version dans lequel il suppose la version de python qui vous intéresse, si vous voulez la changer, vous pouvez le faire dans ce fichier. Attention cependant à modifier conjointement le pyproject.toml pour les dépendances et bien préciser que les versions des paquets doivent être compatibles avec toutes les versions de python à partir de 3.8 si vous voulez, même si la version de python est 3.12.

Execution d'un programme

Pour exécuter un programme qui s'appelle hello.py par exemple

uv run python hello.py

Si le venv n'a pas été créé avant c'est maintenant que uv va le créer et installer les paquets avec les versions spécifiées dans le pyproject.toml

Attention

La commande uv pip install existe encore mais ne rajoute pas le paquet au venv elle va l'installer, mais vous ne saurez pas quelle version, cette commande est donc à remplacer par uv add

Gestion du cache

Un des atouts de uv est qu'il a une très bonne gestion du cache, pour que l'installation de paquets donc vous avez souvent besoin soit plus rapide. Seul bémol cela peut remplir votre ~/.cache. Si vous voulez nettoyer le cache vous pouvez exécuter uv cache purge ce qui est un peu agressif, ou lire la documentation de uv sur le cache. Vous pouvez aussi installer un paquet sans le 'cacher' avec

uv add torch --no-cache

Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)