<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikibr.binets.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jean-nicolas.strauss</id>
	<title>WikiBR - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wikibr.binets.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jean-nicolas.strauss"/>
	<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/Sp%C3%A9cial:Contributions/Jean-nicolas.strauss"/>
	<updated>2026-05-11T19:58:59Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Cloud_computing&amp;diff=10675</id>
		<title>Cloud computing</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Cloud_computing&amp;diff=10675"/>
		<updated>2026-01-24T16:42:24Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : update des consignes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Un projet ? Un PSC ? Beaucoup de calcul ?&lt;br /&gt;
&lt;br /&gt;
Les ordis de salle info c'est pratique mais tous les jours à 6h il est interrompu, je ne peux pas m'en servir pendant les heures de cours, je n'arrive pas à installer les logiciels dont j'ai besoin et mon code n'est pas optimisé pour tourner sur GPU... Le BR te propose une solution : son cluster de cloud computing.&lt;br /&gt;
&lt;br /&gt;
{{Attention|le BR n'a que des CPU sur son cluster, pas de GPU. Si vous voulez utiliser des GPU il faut utiliser les ordinateurs des  [[Acc%C3%A8s_%C3%A0_distance_aux_machines_des_salles_info|salles de TP d'informatique]]. Mais si vous voulez des CPU on sera ravi de vous aider.}}&lt;br /&gt;
&lt;br /&gt;
== Comment ça marche ? ==&lt;br /&gt;
&lt;br /&gt;
En faisant un ticket PaniX le BR peut te créer une machine avec jusqu'à 24 coeurs et 72 Go de RAM.&lt;br /&gt;
&lt;br /&gt;
Dans ton ticket, indique &lt;br /&gt;
* pour quelles raisons tu as besoin d'une machine, &lt;br /&gt;
* pour quelle durée,&lt;br /&gt;
* ta clef publique ssh (ed25519 de préférence ou RSA d'au moins 4096 bits (voir [[SSH]] pour plus d'informations))&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -t ed25519 -a 32&lt;br /&gt;
&lt;br /&gt;
== Détails techniques ==&lt;br /&gt;
&lt;br /&gt;
Tu auras grâce à ta clef un accès en ssh à la machine. On te transmettra le mot de passe du compte pour avoir les accès sudo. La machine tourne sous Debian. Il y a un redémarrage une fois par semaine le dimanche soir pour mise à jour.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Acc%C3%A8s_%C3%A0_distance_aux_machines_des_salles_info&amp;diff=10667</id>
		<title>Accès à distance aux machines des salles info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Acc%C3%A8s_%C3%A0_distance_aux_machines_des_salles_info&amp;diff=10667"/>
		<updated>2026-01-05T16:35:55Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : add uv&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote&amp;gt;&lt;br /&gt;
La procédure indiquée sur l'[https://wikix.polytechnique.org/Acc%C3%A8s_%C3%A0_distance_aux_machines_des_salles_info article WikiX] dédié fonctionne aussi. Il faudra vérifier qu'elle est à jour (typiquement sur Windows ssh est maintenant incorporé au cmd et à powershell), et les articles WikiX concernant SSH seront réorganisées pour clarifier.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour accéder à vos fichiers sur les machines des salles info, il faut utiliser le protocole [[SSH]].&lt;br /&gt;
&lt;br /&gt;
== Setup votre machine pour pouvoir se connecter en SSH ==&lt;br /&gt;
&lt;br /&gt;
Suivre l'article concernant [[SSH]]. Par rapport à ce qui est décrit, '''il n'est pas nécessaire d'avoir créé une identité SSH'''. En effet vous utiliserez directement vos [[identifiants]] DSI pour s'authentifier auprès de la machine distante. Mais il est conseillé de créer une clef SSH et de la copier sur la machine quand même (voir le guide), c'est plus sécurisé et c'est plus pratique.&lt;br /&gt;
&lt;br /&gt;
=== La commande &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Dans une console, la commande suivante te permettra de te connecter au système de fichiers des salles info :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh prenom.nom@nomdelamachine.polytechnique.fr&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;lt;code&amp;gt;nomdelamachine&amp;lt;/code&amp;gt;&amp;quot; est bien sûr à remplacer par le [https://wikix.polytechnique.org/Ordis_de_salle_info nom d'une des machines] ([https://portail.polytechnique.edu/dsi/explorez-les-services/salles-informatiques/liste-des-ordinateurs-dans-les-salles-informatiques aussi accessible sur la page du DSI]), par exemple &amp;lt;code&amp;gt;clavicule&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;mouette&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Selon la console utilisée, il est possible, si c'est la première fois que tu te connectes à une machine des salles info, que tu aies un avertissement comme quoi la clé d'authentification de la machine n'est pas connue. C'est normal, entre &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; pour l'ajouter à la liste des machines connues.&lt;br /&gt;
&lt;br /&gt;
Une fois connecté par SSH à votre compte, tu pourras manipuler le système de fichiers distant grâce aux mêmes commandes Unix (&amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mkdir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;...) que lorsque tu es en salle info.&lt;br /&gt;
&lt;br /&gt;
=== La commande &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
SCP, pour Secure Copy Protocol, est un protocole se basant sur le protocole SSH. Il sert à copier des fichiers entre machines distantes.&lt;br /&gt;
&lt;br /&gt;
Toujours dans la console, la commande suivante te permettra de copier un fichier depuis les ordis des salles infos :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;scp prenom.nom@nomdelamachine.polytechnique.fr:fichier/a/copier fichier/de/destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fichier/a/copier&amp;lt;/code&amp;gt; designe le path du fichier dans le système de fichiers distant, et &amp;lt;code&amp;gt;fichier/de/destination&amp;lt;/code&amp;gt; est le path du dossier, sur votre machine, ou tu veux le copier.&lt;br /&gt;
&lt;br /&gt;
Pour copier des dossiers, c'est la même option que pour &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;scp -r prenom.nom@nomdelamachine.polytechnique.fr:dossier/a/copier dossier/de/destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu peux aussi utiliser un client graphique comme [https://filezilla-project.org/ Filezilla] ou [https://winscp.net/eng/download.php WinSCP].&lt;br /&gt;
&lt;br /&gt;
== Liens utiles ==&lt;br /&gt;
* Liste des logiciels installés dans les PC de salle info et comment les utiliser : [https://www.enseignement.polytechnique.fr/software-si/ cliquer ici]&lt;br /&gt;
* Créer un serveur Apache / PHP/ MySQL : [http://www.enseignement.polytechnique.fr/amp/ aide de l'école]&lt;br /&gt;
* [[Setup_uv_TD_info|Comment setup uv]] pour gérer avec un seul outil ses &lt;br /&gt;
** versions de python différentes&lt;br /&gt;
** versions de packets différents&lt;br /&gt;
** environnement virtuels&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Cloud_computing&amp;diff=10666</id>
		<title>Cloud computing</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Cloud_computing&amp;diff=10666"/>
		<updated>2026-01-05T16:30:00Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : arrrretez de nous demander des gpu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Un projet ? Un PSC ? Beaucoup de calcul ?&lt;br /&gt;
&lt;br /&gt;
Les ordis de salle info c'est pratique mais tous les jours à 6h il est interrompu, je ne peux pas m'en servir pendant les heures de cours, je n'arrive pas à installer les logiciels dont j'ai besoin et mon code n'est pas optimisé pour tourner sur GPU... Le BR te propose une solution : son cluster de cloud computing.&lt;br /&gt;
&lt;br /&gt;
{{Attention|le BR n'a que des CPU sur son cluster, pas de GPU. Si vous voulez utiliser des GPU il faut utiliser les ordinateurs des  [[Acc%C3%A8s_%C3%A0_distance_aux_machines_des_salles_info|salles de TP d'informatique]]. Mais si vous voulez des CPU on sera ravi de vous aider.}}&lt;br /&gt;
&lt;br /&gt;
== Comment ça marche ? ==&lt;br /&gt;
&lt;br /&gt;
En faisant un ticket PaniX le BR peut te créer une machine avec jusqu'à 24 coeurs et 72 Go de RAM.&lt;br /&gt;
&lt;br /&gt;
Dans ton ticket, indique pour quelles raisons tu as besoin d'une machine, pour quelle durée et ta clef publique ssh RSA d'au moins 4096 bits (voir [[SSH]] pour plus d'informations) :&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -t ed25519 -a 32&lt;br /&gt;
&lt;br /&gt;
== Détails techniques ==&lt;br /&gt;
&lt;br /&gt;
Tu auras grâce à ta clef un accès en ssh à la machine. On te transmettra le mot de passe du compte pour avoir les accès sudo. La machine tourne sous Debian. Il y a un redémarrage une fois par semaine le dimanche soir pour mise à jour.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Cloud_computing&amp;diff=10665</id>
		<title>Cloud computing</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Cloud_computing&amp;diff=10665"/>
		<updated>2026-01-05T16:29:37Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : arrrretez de nous demander des gpu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Un projet ? Un PSC ? Beaucoup de calcul ?&lt;br /&gt;
&lt;br /&gt;
Les ordis de salle info c'est pratique mais tous les jours à 6h il est interrompu, je ne peux pas m'en servir pendant les heures de cours, je n'arrive pas à installer les logiciels dont j'ai besoin et mon code n'est pas optimisé pour tourner sur GPU... Le BR te propose une solution : son cluster de cloud computing.&lt;br /&gt;
&lt;br /&gt;
{{Attention|le BR n'a que des CPU sur son cluster, pas de GPU. Si vous voulez utiliser des GPU il faut utiliser les ordinateurs des  [[Acc%C3%A8s_%C3%A0_distance_aux_machines_des_salles_info|salles de TP d'informatique]]}}. Mais si vous voulez des CPU on sera ravi de vous aider.&lt;br /&gt;
&lt;br /&gt;
== Comment ça marche ? ==&lt;br /&gt;
&lt;br /&gt;
En faisant un ticket PaniX le BR peut te créer une machine avec jusqu'à 24 coeurs et 72 Go de RAM.&lt;br /&gt;
&lt;br /&gt;
Dans ton ticket, indique pour quelles raisons tu as besoin d'une machine, pour quelle durée et ta clef publique ssh RSA d'au moins 4096 bits (voir [[SSH]] pour plus d'informations) :&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -t ed25519 -a 32&lt;br /&gt;
&lt;br /&gt;
== Détails techniques ==&lt;br /&gt;
&lt;br /&gt;
Tu auras grâce à ta clef un accès en ssh à la machine. On te transmettra le mot de passe du compte pour avoir les accès sudo. La machine tourne sous Debian. Il y a un redémarrage une fois par semaine le dimanche soir pour mise à jour.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10531</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10531"/>
		<updated>2025-02-21T16:05:49Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : tanche -&amp;gt; thon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E 'f^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
= uv =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;extremely fast Python package and project manager, written in Rust.&amp;quot; (source leur doc)&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par exemple pour ajouter PyTorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
Quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
&amp;lt;ref&amp;gt;une variante est de rajouter -fN à la fin de la commande ssh pour avoir le tunnel ssh en arrière plan et se connecter en ssh simplement après, mais si ce commentaire vous semble du charabia oubliez le&amp;lt;/ref&amp;gt;&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur thon. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10530</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10530"/>
		<updated>2025-02-21T16:02:15Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : ssh commet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E 'f^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
= uv =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;extremely fast Python package and project manager, written in Rust.&amp;quot; (source leur doc)&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par exemple pour ajouter PyTorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
Quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
&amp;lt;ref&amp;gt;une variante est de rajouter -fN à la fin de la commande ssh pour avoir le tunnel ssh en arrière plan et se connecter en ssh simplement après, mais si ce commentaire vous semble du charabia oubliez le&amp;lt;/ref&amp;gt;&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10529</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10529"/>
		<updated>2025-02-21T15:59:03Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : relecture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E 'f^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
= uv =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;extremely fast Python package and project manager, written in Rust.&amp;quot; (source leur doc)&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par exemple pour ajouter PyTorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
Quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10528</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10528"/>
		<updated>2025-02-21T15:46:27Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
= uv =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10527</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10527"/>
		<updated>2025-02-21T15:44:59Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
= uv =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un Projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10526</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10526"/>
		<updated>2025-02-21T15:44:38Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : changement de l'arborescence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un Projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10525</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10525"/>
		<updated>2025-02-21T15:43:24Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : tanche -&amp;gt; thon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un Projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@thon.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;thon v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10524</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10524"/>
		<updated>2025-02-21T15:42:10Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : /* Lancement de jupyter avec uv - execution de code à distance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un Projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@tanche.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;tanche v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Pour tuer le serveur vous pouvez récupérer le PID de votre processus et le tuer avec &lt;br /&gt;
 kill $(jobs -l | cut -d ' ' -f 2)&lt;br /&gt;
ou alors le tuer avec {{c|pkill uv}} mais vous allez aussi tuer les processus des autres ce qui est pas cool, donc évitez svp&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10523</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10523"/>
		<updated>2025-02-21T15:35:58Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : Ajout du dev à distance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un Projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;br /&gt;
&lt;br /&gt;
== Utilisation du venv dans vscode ==&lt;br /&gt;
Une fois que uv a créé le venv vous pouvez l'utiliser comme un venv normal avec vscode en précisant le chemin de votre venv s'il n'est pas dans votre dossier de travail.&lt;br /&gt;
&lt;br /&gt;
== uv et git ==&lt;br /&gt;
&lt;br /&gt;
quand on exécute la commande {{c|uv init}} il crée aussi un repo git. Profitez-en !! Apprenez à utiliser [[git]] pour ne pas perdre votre travail, à chaque itération et comparer ce que vous avez fait à chaque modification.&lt;br /&gt;
&lt;br /&gt;
== Lancement de jupyter avec uv - execution de code à distance ==&lt;br /&gt;
Pour les personnes qui ont tellement streamliné leur processus de développement avec un environement de dev sur leur machine mais un serveur jupyter distant pour exécuter le code.&lt;br /&gt;
 ssh -L localhost:8888:localhost:8888 prenom.nom@tanche.polytechnique.fr&lt;br /&gt;
 cd foo/bar&lt;br /&gt;
 uv init&lt;br /&gt;
 uv add jupyter&lt;br /&gt;
 uv run jupyter notebook --no-browser --port=8888 &amp;amp;&lt;br /&gt;
 disown %1&lt;br /&gt;
Copier la ligne du genre http://localhost:8888/tree?token=36b32207109218c28fec0772a8471b320ec2177a27443e2f qui vient d'apparaître et dans vscode cliquer sur {{c|Select kernel -&amp;gt; Existing jupyter server}} coller ce que vous venez de copier, dans la prochaine case nommez votre serveur (par exemple &amp;quot;tanche v1&amp;quot;), et sélectionner kernel python. Le tour est joué, votre code est sauvé sur votre machine mais exécuté à distance sur tanche. Si la dsi éteint l'ordi pendant les vacances alors vous aurez encore tout votre code.&lt;br /&gt;
&lt;br /&gt;
Attention : pensez à régulièrement synchroniser votre pyproject.toml (avec git par exemple) pour que les versions que vous ajoutez sur votre dossier local (sur votre ordinateur) soit les mêmes que celles que fait tourner uv sur l'ordi du labo.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10522</id>
		<title>Setup uv TD info</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Setup_uv_TD_info&amp;diff=10522"/>
		<updated>2025-02-21T15:23:47Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : Création page stockage salles de TP et installation uv&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gérer son stockage sur les ordis des labos =&lt;br /&gt;
&lt;br /&gt;
C'est un des problèmes les plus communs de l'X que de se retrouver avec une erreur du genre {{c|Disk quota exceeded (os error 122)}}.&lt;br /&gt;
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 {{c|~/foo/bar}} vous allez le retrouver dans tous les autres ordis, c'est notamment le cas du dossier {{c|.ssh}} et le dossier {{c|.config}}. Cependant sur chaque ordi est présent un {{c|/Data}} de très grande taille ou tout le monde peut travailler. &lt;br /&gt;
&lt;br /&gt;
Pour résoudre le problème de manque de place plusieurs étapes&lt;br /&gt;
&lt;br /&gt;
== Identifier ce qui prend de la place ==&lt;br /&gt;
&lt;br /&gt;
 du -hc ~/ 2&amp;gt;/dev/null | grep -E '^([0-9]|,|\.)+G'&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de savoir ce qui fait au moins un giga dans ses dossiers.&lt;br /&gt;
&lt;br /&gt;
Si c'est pip qui prend trop de place on peut exécuter&lt;br /&gt;
 pip cache purge&lt;br /&gt;
pour nettoyer un peu tout ces vieux paquets dont on ne se sert plus.&lt;br /&gt;
&lt;br /&gt;
Mais plus puissant que pip est {{c|uv}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.astral.sh/uv/ uv] est un &amp;quot;An extremely fast Python package and project manager, written in Rust.&amp;quot;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Installation de uv ==&lt;br /&gt;
&lt;br /&gt;
Pour installer UV :&lt;br /&gt;
 curl -LsSf https://astral.sh/uv/install.sh | sh&lt;br /&gt;
C'est tout&lt;br /&gt;
&lt;br /&gt;
== Initialisation d'un Projet avec uv ==&lt;br /&gt;
&lt;br /&gt;
Pour initialiser un nouveau projet avec uv, suivez ces étapes :&lt;br /&gt;
&lt;br /&gt;
 mkdir projet-de-ouf&lt;br /&gt;
 cd projet-de-ouf&lt;br /&gt;
 uv init&lt;br /&gt;
&lt;br /&gt;
uv s'occupe des conflits de dépendances, de l'installation des paquets, de la gestion du venv, le tout avec le {{c|pyproject.toml}} qui est son fichier de configuration, qu'il gère automatiquement.&lt;br /&gt;
&lt;br /&gt;
=== Ajout d'un paquet au venv ===&lt;br /&gt;
&lt;br /&gt;
Oubliez pip install faites place à {{c|uv add}}, par expemple pour ajouter pytorch&lt;br /&gt;
 uv add torch&lt;br /&gt;
Pour vérifier qu'il a bien été ajouté au projet vous pouvez consulter le {{c|pyproject.toml}} et voir que le paquet à bien été ajouté avec la bonne version.&lt;br /&gt;
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&lt;br /&gt;
 uv run python&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
Mais pas besoin de créer le venv pour configurer tous les paquets&lt;br /&gt;
&lt;br /&gt;
=== Changement de la version de python ===&lt;br /&gt;
uv créé automatiquement un {{c|.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 {{c|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.&lt;br /&gt;
&lt;br /&gt;
=== Execution d'un programme ===&lt;br /&gt;
Pour exécuter un programme qui s'appelle {{c|hello.py}} par exemple&lt;br /&gt;
 uv run python hello.py&lt;br /&gt;
&lt;br /&gt;
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 {{c|pyproject.toml}}&lt;br /&gt;
&lt;br /&gt;
=== Attention ===&lt;br /&gt;
La commande {{c|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 {{c|uv add}}&lt;br /&gt;
&lt;br /&gt;
== Gestion du cache ==&lt;br /&gt;
&lt;br /&gt;
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 {{c|~/.cache}}. Si vous voulez nettoyer le cache vous pouvez exécuter {{c|uv cache purge}} ce qui est un peu agressif, ou lire [https://docs.astral.sh/uv/concepts/cache/ la documentation de uv sur le cache].&lt;br /&gt;
Vous pouvez aussi installer un paquet sans le 'cacher' avec &lt;br /&gt;
 uv add torch --no-cache&lt;br /&gt;
Voire même en lui spécifiant le dossier de cache que vous voulez utiliser (cf la doc de uv)&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=H%C3%A9bergement_des_sites_des_binets&amp;diff=10385</id>
		<title>Hébergement des sites des binets</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=H%C3%A9bergement_des_sites_des_binets&amp;diff=10385"/>
		<updated>2024-09-09T01:44:21Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{menu services}}&lt;br /&gt;
[[Catégorie:Services]]&lt;br /&gt;
&lt;br /&gt;
Le BR propose aux binets qui le désirent d'héberger gratuitement leur site web.&lt;br /&gt;
&lt;br /&gt;
Cet hébergement s'organise selon deux formules, avec ou sans la possibilité d'accéder au site de l'extérieur du Plâtal.&lt;br /&gt;
&lt;br /&gt;
Pour demander l'hébergement de ton site, [https://panix.binets.fr ouvre une tâche Panix] en précisant l'identifiant du groupe/binet au nom duquel tu fais la demande (si tu ne le connais pas, donne le lien vers le groupe/binet sur Sigma).&lt;br /&gt;
&lt;br /&gt;
'''Réfléchis bien a quel va être le cahier des charges de ton site avant de te lancer.''' S'il n'est qu'un blog n'hésite pas à chercher des solutions permettant de t'éviter de développer un site ''from scratch'' en php ou avec django, et penche toi du côté de solutions telles que jekyll, hugo avec forestry, nextjs avec vercel et plein d'autres. Si ton site aura besoin d'un vrai backend dans ce cas poursuis ta lecture.&lt;br /&gt;
&lt;br /&gt;
Tu peux également demander à mettre une [[authentification CAS]], [[openID]], ou encore protéger ton site par un portail d'authentification global si ton site est déployé sous docker (i.e. tu peux considérer que l'utilisateur est déjà connecté une fois sur le site).&lt;br /&gt;
&lt;br /&gt;
En fonction des technologies utilisées, on a différents tuto à te proposer:&lt;br /&gt;
* un [[Tuto pour le déploiement des sites Django]] des sites binets codés en django/flask/(tout ce qui supporte uwsgi).&lt;br /&gt;
* un [[Tuto pour le déploiement des sites avec Docker]] pour n'importe quel site.&lt;br /&gt;
Et sinon n'hésite pas à aller voir vers d'autres langages et frameworks, il en existe pléthores, et pour des tonnes de langages, que ce soit du js jusqu'au haskell en passant par le python, le go, le rust et tant d'autres.&lt;br /&gt;
&lt;br /&gt;
Les sites internes en php sont hébergés sur [[Admin:Ostizan | Ostizan]] mais devraient être migrés.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Nous n'acceptons plus de demandes d'hébergement sur [[Admin:Ostizan | Ostizan]]. Si votre site est actuellement hébergé dessus n'hésitez pas à entrer en contact avec le [[BR]] (cf [[Accueil]]) pour le migrer sur [[Admin:Endalcher|Endalcher]] avec le [[Tuto pour le déploiement des sites avec Docker]]}}&lt;br /&gt;
== Modalités techniques de l'hébergement sur Ostizan==&lt;br /&gt;
L'hébergement classique offert par le BR présente les caractéristiques suivantes :&lt;br /&gt;
* Capacité de stockage limitée à 200Mo par défaut. Il est possible d'obtenir plus sur demande.&lt;br /&gt;
* Serveur apache avec PHP 7&lt;br /&gt;
* Base de données MySQL&lt;br /&gt;
* Accès en HTTPS/HTTP&lt;br /&gt;
* Hébergement Django/Flask avec uWSGI&lt;br /&gt;
&lt;br /&gt;
Si vous avez des besoins plus spécifiques, n'hésitez pas à nous en parler.&lt;br /&gt;
&lt;br /&gt;
== Accès au site ==&lt;br /&gt;
&lt;br /&gt;
L'administration du site se fait par [[SSH]]. Il est ouvert à tous les administrateurs du binet considéré, et à eux seuls. Pour cela, utilisez vos identifiants Sigma. Exemple de commande à utiliser : &amp;lt;code&amp;gt;ssh prenom.nom@id_sigma.binets.fr&amp;lt;/code&amp;gt;, puis rentrez votre mot de passe lorsque celui vous est demandé.&lt;br /&gt;
&lt;br /&gt;
L'écriture du site est bien entendu à la charge du webmaster du binet ; en cas de nécessité et pour une raison valable, un BRman pourra cependant proposer son aide.&lt;br /&gt;
&lt;br /&gt;
L'adresse du site est alors mon_binet.binets.fr ou mon_binet.binets.eleves.polytechnique.fr ;&lt;br /&gt;
&lt;br /&gt;
La base de données MySQL est accessible par un PhpMyAdmin : [http://phpmyadmin.binets.fr/ http://phpmyadmin.binets.fr/]. Le nom d'utilisateur correspond au nom du binet tel qu'il apparaît dans le nom de domaine. Le mot de passe a été donné au binet à la création de la base SQL ; le BR ne le possède pas et vous devez le passer à vos successeurs pour éviter de le perdre à tout jamais.&lt;br /&gt;
&lt;br /&gt;
=== Modification des fichiers du site ===&lt;br /&gt;
&lt;br /&gt;
Les fichiers se situent sur le serveur ostizan, dans le répertoire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;/hosting/www/nom_binet/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Avec Git (recommandé) ====&lt;br /&gt;
&lt;br /&gt;
ostizan dispose d’une installation [[Git]].&lt;br /&gt;
&lt;br /&gt;
Avec Git, vous pouvez garder un historique des versions successives de votre site, travailler à plusieurs, revenir en arrière quand vous avez cassé quelque chose, savoir qui a modifié quoi, quand … C’est un outil très puissant.&lt;br /&gt;
&lt;br /&gt;
'''Prérequis :''' ''avoir une clef [[SSH]] activée sur votre compte sur ostizan''&lt;br /&gt;
&lt;br /&gt;
Pour savoir comment configurer et construire un projet avec Git, référez-vous à la documentation. Vous pouvez héberger votre code chez nous sur [https://gitlab.binets.fr GitLab].&lt;br /&gt;
&lt;br /&gt;
Naviguez au dossier où vous voulez mettre votre site, par exemple &amp;lt;code&amp;gt;htdocs&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;cd /hosting/www/nom_binet/htdocs&amp;lt;/pre&amp;gt;&lt;br /&gt;
et initialisez un dépôt Git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git init&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si cela a fonctionné, le terminal répondra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Initialized empty Git repository in /hosting/www/nom_binet/htdocs/.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ajoutez maintenant une ''remote'' qui pointera vers là où vous hébergez votre code, par exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git remote add origin git@gitlab.binets.fr:domaine/site.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
pour un site dont le code est hébergé sur le GitLab, ou&lt;br /&gt;
&lt;br /&gt;
Ensuite, faites&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git pull origin master&amp;lt;/pre&amp;gt;&lt;br /&gt;
pour cloner le dépôt (si la ''remote'' que vous avez ajouté s’appelle &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; et que votre code est sur la branche &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== En SFTP ====&lt;br /&gt;
&lt;br /&gt;
Pour accéder aux fichiers, on peut utiliser un client sftp (comme [https://filezilla-project.org/download.php?type=client FileZilla] ou [https://winscp.net/eng/index.php WinSCP]) et accéder au serveur &amp;lt;code&amp;gt;sftp://id_sigma.binets.fr&amp;lt;/code&amp;gt; sur le port 22.&lt;br /&gt;
&lt;br /&gt;
Le serveur SFTP demande un login / mot de passe qui correspondent exactement à ceux du compte Sigma. Le dossier &amp;lt;code&amp;gt;sftp://id_sigma.binets.fr/www/id_sigma/htdocs/&amp;lt;/code&amp;gt; correspond au site &amp;lt;code&amp;gt;http://id_sigma.binets.fr/&amp;lt;/code&amp;gt;. Les fichiers qui ne sont pas dans htdocs ne sont pas accessibles directement par un navigateur, mais un script php peut y accéder.&lt;br /&gt;
&lt;br /&gt;
=== Avec visibilité extérieure ===&lt;br /&gt;
&lt;br /&gt;
Le BR a un partenariat avec la DSI qui lui permet d'exposer certains sites à l'extérieur. Ils feront l'objet d'[[un audit de sécurité]] par le BR et la DSI. Pour le passer, il faut respecter les dernières recommandations de sécurité, notamment pour tout ce qui est authentification, contenu dynamique. Notons cependant que cela ne devrait pas poser de problèmes pour les sites statiques. &lt;br /&gt;
&lt;br /&gt;
Les sites souhaitant un site avec visibilité depuis l'extérieur doivent dorénavant respecter la charte suivante :&lt;br /&gt;
&lt;br /&gt;
*Aucune information ne doit être diffusée qui pourrait nuire à l'image de l’École. (photos, vidéos, etc.)&lt;br /&gt;
*Le site doit avoir une qualité visuelle, si ce n'est professionnelle, du moins très correcte.&lt;br /&gt;
*Le site ne doit pas héberger de vidéos ou diffuser un flux vidéo (streaming). Toutes les vidéos du sites doivent être hébergées à l'extérieur. (Dalymotion, YouTube, etc.)&lt;br /&gt;
*Les images présentes sur le site ne doivent avoir une résolution suffisamment faible afin de ne pas saturer la bande passante vers l'extérieur.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Si le site concerne un événement extérieur avec un public de plus de 50 personnes, la DSI demande à ce que la DIRCOM soit prévenue.}}&lt;br /&gt;
&lt;br /&gt;
== Quotas ==&lt;br /&gt;
&lt;br /&gt;
Attention ! L'espace réservé à chaque binet est limité. Il faut se méfier quand on fait une copie, notamment a l'environnement virtuel. D'abord il pèse lourd, en plus il faudra que vous le remplaciez de toute façon. Autant ne pas le copier dès le départ...&lt;br /&gt;
Pour savoir si vous avez dépassé votre quota :&lt;br /&gt;
 quota -sg&lt;br /&gt;
Cette commande affiche, pour chaque binet, l'espace utilisé, une «soft limit» et la vraie («hard») limit.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=H%C3%A9bergement_des_sites_des_binets&amp;diff=10384</id>
		<title>Hébergement des sites des binets</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=H%C3%A9bergement_des_sites_des_binets&amp;diff=10384"/>
		<updated>2024-09-09T01:43:43Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : Conseille les binets de ne pas réinventer la roue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{menu services}}&lt;br /&gt;
[[Catégorie:Services]]&lt;br /&gt;
&lt;br /&gt;
Le BR propose aux binets qui le désirent d'héberger gratuitement leur site web.&lt;br /&gt;
&lt;br /&gt;
Cet hébergement s'organise selon deux formules, avec ou sans la possibilité d'accéder au site de l'extérieur du Plâtal.&lt;br /&gt;
&lt;br /&gt;
Pour demander l'hébergement de ton site, [https://panix.binets.fr ouvre une tâche Panix] en précisant l'identifiant du groupe/binet au nom duquel tu fais la demande (si tu ne le connais pas, donne le lien vers le groupe/binet sur Sigma).&lt;br /&gt;
&lt;br /&gt;
'''Réfléchis bien a quel va être le cahier des charges de ton site avant de te lancer.''' S'il n'est qu'un blog n'hésite pas à chercher des solutions permettant de t'éviter de développer un site ''from scratch'' en php ou avec django, et penche toi du côté de solutions telles que jekyll, hugo avec forestry, nextjs avec vercel et plein d'autres. Si ton site aura besoin d'un vrai backend dans ce cas poursuis ta lecture.&lt;br /&gt;
&lt;br /&gt;
Tu peux également demander à mettre une [[authentification CAS]], [[openID]], ou encore protéger ton site par un portail d'authentification global si ton site est déployé sous docker (i.e. tu peux considérer que l'utilisateur est déjà connecté une fois sur le site).&lt;br /&gt;
&lt;br /&gt;
En fonction des technologies utilisées, on a différents tuto à te proposer:&lt;br /&gt;
* un [[Tuto pour le déploiement des sites Django]] des sites binets codés en django/flask/(tout ce qui supporte uwsgi).&lt;br /&gt;
* un [[Tuto pour le déploiement des sites avec Docker]] pour n'importe quel site.&lt;br /&gt;
Et sinon n'hésite pas à aller voir vers d'autres langages et frameworks, il en existe pléthores, et pour des tonnes de langages, que ce soit du python jusqu'au haskell en passant par le js, le go, le rust et tant d'autres.&lt;br /&gt;
&lt;br /&gt;
Les sites internes en php sont hébergés sur [[Admin:Ostizan | Ostizan]] mais devraient être migrés.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Nous n'acceptons plus de demandes d'hébergement sur [[Admin:Ostizan | Ostizan]]. Si votre site est actuellement hébergé dessus n'hésitez pas à entrer en contact avec le [[BR]] (cf [[Accueil]]) pour le migrer sur [[Admin:Endalcher|Endalcher]] avec le [[Tuto pour le déploiement des sites avec Docker]]}}&lt;br /&gt;
== Modalités techniques de l'hébergement sur Ostizan==&lt;br /&gt;
L'hébergement classique offert par le BR présente les caractéristiques suivantes :&lt;br /&gt;
* Capacité de stockage limitée à 200Mo par défaut. Il est possible d'obtenir plus sur demande.&lt;br /&gt;
* Serveur apache avec PHP 7&lt;br /&gt;
* Base de données MySQL&lt;br /&gt;
* Accès en HTTPS/HTTP&lt;br /&gt;
* Hébergement Django/Flask avec uWSGI&lt;br /&gt;
&lt;br /&gt;
Si vous avez des besoins plus spécifiques, n'hésitez pas à nous en parler.&lt;br /&gt;
&lt;br /&gt;
== Accès au site ==&lt;br /&gt;
&lt;br /&gt;
L'administration du site se fait par [[SSH]]. Il est ouvert à tous les administrateurs du binet considéré, et à eux seuls. Pour cela, utilisez vos identifiants Sigma. Exemple de commande à utiliser : &amp;lt;code&amp;gt;ssh prenom.nom@id_sigma.binets.fr&amp;lt;/code&amp;gt;, puis rentrez votre mot de passe lorsque celui vous est demandé.&lt;br /&gt;
&lt;br /&gt;
L'écriture du site est bien entendu à la charge du webmaster du binet ; en cas de nécessité et pour une raison valable, un BRman pourra cependant proposer son aide.&lt;br /&gt;
&lt;br /&gt;
L'adresse du site est alors mon_binet.binets.fr ou mon_binet.binets.eleves.polytechnique.fr ;&lt;br /&gt;
&lt;br /&gt;
La base de données MySQL est accessible par un PhpMyAdmin : [http://phpmyadmin.binets.fr/ http://phpmyadmin.binets.fr/]. Le nom d'utilisateur correspond au nom du binet tel qu'il apparaît dans le nom de domaine. Le mot de passe a été donné au binet à la création de la base SQL ; le BR ne le possède pas et vous devez le passer à vos successeurs pour éviter de le perdre à tout jamais.&lt;br /&gt;
&lt;br /&gt;
=== Modification des fichiers du site ===&lt;br /&gt;
&lt;br /&gt;
Les fichiers se situent sur le serveur ostizan, dans le répertoire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;/hosting/www/nom_binet/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Avec Git (recommandé) ====&lt;br /&gt;
&lt;br /&gt;
ostizan dispose d’une installation [[Git]].&lt;br /&gt;
&lt;br /&gt;
Avec Git, vous pouvez garder un historique des versions successives de votre site, travailler à plusieurs, revenir en arrière quand vous avez cassé quelque chose, savoir qui a modifié quoi, quand … C’est un outil très puissant.&lt;br /&gt;
&lt;br /&gt;
'''Prérequis :''' ''avoir une clef [[SSH]] activée sur votre compte sur ostizan''&lt;br /&gt;
&lt;br /&gt;
Pour savoir comment configurer et construire un projet avec Git, référez-vous à la documentation. Vous pouvez héberger votre code chez nous sur [https://gitlab.binets.fr GitLab].&lt;br /&gt;
&lt;br /&gt;
Naviguez au dossier où vous voulez mettre votre site, par exemple &amp;lt;code&amp;gt;htdocs&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;cd /hosting/www/nom_binet/htdocs&amp;lt;/pre&amp;gt;&lt;br /&gt;
et initialisez un dépôt Git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git init&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si cela a fonctionné, le terminal répondra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Initialized empty Git repository in /hosting/www/nom_binet/htdocs/.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ajoutez maintenant une ''remote'' qui pointera vers là où vous hébergez votre code, par exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git remote add origin git@gitlab.binets.fr:domaine/site.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
pour un site dont le code est hébergé sur le GitLab, ou&lt;br /&gt;
&lt;br /&gt;
Ensuite, faites&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git pull origin master&amp;lt;/pre&amp;gt;&lt;br /&gt;
pour cloner le dépôt (si la ''remote'' que vous avez ajouté s’appelle &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; et que votre code est sur la branche &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== En SFTP ====&lt;br /&gt;
&lt;br /&gt;
Pour accéder aux fichiers, on peut utiliser un client sftp (comme [https://filezilla-project.org/download.php?type=client FileZilla] ou [https://winscp.net/eng/index.php WinSCP]) et accéder au serveur &amp;lt;code&amp;gt;sftp://id_sigma.binets.fr&amp;lt;/code&amp;gt; sur le port 22.&lt;br /&gt;
&lt;br /&gt;
Le serveur SFTP demande un login / mot de passe qui correspondent exactement à ceux du compte Sigma. Le dossier &amp;lt;code&amp;gt;sftp://id_sigma.binets.fr/www/id_sigma/htdocs/&amp;lt;/code&amp;gt; correspond au site &amp;lt;code&amp;gt;http://id_sigma.binets.fr/&amp;lt;/code&amp;gt;. Les fichiers qui ne sont pas dans htdocs ne sont pas accessibles directement par un navigateur, mais un script php peut y accéder.&lt;br /&gt;
&lt;br /&gt;
=== Avec visibilité extérieure ===&lt;br /&gt;
&lt;br /&gt;
Le BR a un partenariat avec la DSI qui lui permet d'exposer certains sites à l'extérieur. Ils feront l'objet d'[[un audit de sécurité]] par le BR et la DSI. Pour le passer, il faut respecter les dernières recommandations de sécurité, notamment pour tout ce qui est authentification, contenu dynamique. Notons cependant que cela ne devrait pas poser de problèmes pour les sites statiques. &lt;br /&gt;
&lt;br /&gt;
Les sites souhaitant un site avec visibilité depuis l'extérieur doivent dorénavant respecter la charte suivante :&lt;br /&gt;
&lt;br /&gt;
*Aucune information ne doit être diffusée qui pourrait nuire à l'image de l’École. (photos, vidéos, etc.)&lt;br /&gt;
*Le site doit avoir une qualité visuelle, si ce n'est professionnelle, du moins très correcte.&lt;br /&gt;
*Le site ne doit pas héberger de vidéos ou diffuser un flux vidéo (streaming). Toutes les vidéos du sites doivent être hébergées à l'extérieur. (Dalymotion, YouTube, etc.)&lt;br /&gt;
*Les images présentes sur le site ne doivent avoir une résolution suffisamment faible afin de ne pas saturer la bande passante vers l'extérieur.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Si le site concerne un événement extérieur avec un public de plus de 50 personnes, la DSI demande à ce que la DIRCOM soit prévenue.}}&lt;br /&gt;
&lt;br /&gt;
== Quotas ==&lt;br /&gt;
&lt;br /&gt;
Attention ! L'espace réservé à chaque binet est limité. Il faut se méfier quand on fait une copie, notamment a l'environnement virtuel. D'abord il pèse lourd, en plus il faudra que vous le remplaciez de toute façon. Autant ne pas le copier dès le départ...&lt;br /&gt;
Pour savoir si vous avez dépassé votre quota :&lt;br /&gt;
 quota -sg&lt;br /&gt;
Cette commande affiche, pour chaque binet, l'espace utilisé, une «soft limit» et la vraie («hard») limit.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Gpg&amp;diff=10326</id>
		<title>Gpg</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Gpg&amp;diff=10326"/>
		<updated>2024-06-24T00:21:12Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : creation redirection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECTION [[GPG]]&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=GPG&amp;diff=10325</id>
		<title>GPG</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=GPG&amp;diff=10325"/>
		<updated>2024-06-22T15:26:52Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : Création de gpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intérêt de GPG=&lt;br /&gt;
Si vous signez vos commits git on peut être sûr que c'est bien vous qui l'avez commit. Cela rajoute de la sécurité.&lt;br /&gt;
&lt;br /&gt;
=Création d'une clef GPG=&lt;br /&gt;
[https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key Création d'une clef GPG]. Suivez la procédure et rajoutez la clef a votre compte gitlab. Puis ajoutez la a votre configuration par défaut.&lt;br /&gt;
&lt;br /&gt;
 git config --global user.signingkey 3AA5C34371567BD2&lt;br /&gt;
 git config --global commit.gpgsign true&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=H%C3%A9bergement_des_sites_des_binets&amp;diff=10322</id>
		<title>Hébergement des sites des binets</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=H%C3%A9bergement_des_sites_des_binets&amp;diff=10322"/>
		<updated>2024-06-18T11:42:35Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : ostizan deprecated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{menu services}}&lt;br /&gt;
[[Catégorie:Services]]&lt;br /&gt;
&lt;br /&gt;
Le BR propose aux binets qui le désirent d'héberger gratuitement leur site web.&lt;br /&gt;
&lt;br /&gt;
Cet hébergement s'organise selon deux formules, avec ou sans la possibilité d'accéder au site de l'extérieur du Plâtal.&lt;br /&gt;
&lt;br /&gt;
Pour demander l'hébergement de ton site, [https://panix.binets.fr ouvre une tâche Panix] en précisant l'identifiant du groupe/binet au nom duquel tu fais la demande (si tu ne le connais pas, donne le lien vers le groupe/binet sur Sigma).&lt;br /&gt;
&lt;br /&gt;
Tu peux également demander à mettre une [[authentification CAS]], [[openID]], ou encore protéger ton site par un portail d'authentification global si ton site est déployé sous docker (i.e. tu peux considérer que l'utilisateur est déjà connecté une fois sur le site).&lt;br /&gt;
&lt;br /&gt;
En fonction des technologies utilisées, on a différents tuto à te proposer:&lt;br /&gt;
* un [[Tuto pour le déploiement des sites Django]] des sites binets codés en django/flask/(tout ce qui supporte uwsgi).&lt;br /&gt;
* un [[Tuto pour le déploiement des sites avec Docker]] pour n'importe quel site.&lt;br /&gt;
&lt;br /&gt;
Les sites internes en php sont hébergés sur [[Admin:Ostizan | Ostizan]] mais devraient être migrés.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Nous n'acceptons plus de demandes d'hébergement sur [[Admin:Ostizan | Ostizan]]. Si votre site est actuellement hébergé dessus n'hésitez pas à entrer en contact avec le [[BR]] (cf [[Accueil]]) pour le migrer sur [[Admin:Endalcher|Endalcher]] avec le [[Tuto pour le déploiement des sites avec Docker]]}}&lt;br /&gt;
== Modalités techniques de l'hébergement sur Ostizan==&lt;br /&gt;
L'hébergement classique offert par le BR présente les caractéristiques suivantes :&lt;br /&gt;
* Capacité de stockage limitée à 200Mo par défaut. Il est possible d'obtenir plus sur demande.&lt;br /&gt;
* Serveur apache avec PHP 7&lt;br /&gt;
* Base de données MySQL&lt;br /&gt;
* Accès en HTTPS/HTTP&lt;br /&gt;
* Hébergement Django/Flask avec uWSGI&lt;br /&gt;
&lt;br /&gt;
Si vous avez des besoins plus spécifiques, n'hésitez pas à nous en parler.&lt;br /&gt;
&lt;br /&gt;
== Accès au site ==&lt;br /&gt;
&lt;br /&gt;
L'administration du site se fait par [[SSH]]. Il est ouvert à tous les administrateurs du binet considéré, et à eux seuls. Pour cela, utilisez vos identifiants Sigma. Exemple de commande à utiliser : &amp;lt;code&amp;gt;ssh prenom.nom@id_sigma.binets.fr&amp;lt;/code&amp;gt;, puis rentrez votre mot de passe lorsque celui vous est demandé.&lt;br /&gt;
&lt;br /&gt;
L'écriture du site est bien entendu à la charge du webmaster du binet ; en cas de nécessité et pour une raison valable, un BRman pourra cependant proposer son aide.&lt;br /&gt;
&lt;br /&gt;
L'adresse du site est alors mon_binet.binets.fr ou mon_binet.binets.eleves.polytechnique.fr ;&lt;br /&gt;
&lt;br /&gt;
La base de données MySQL est accessible par un PhpMyAdmin : [http://phpmyadmin.binets.fr/ http://phpmyadmin.binets.fr/]. Le nom d'utilisateur correspond au nom du binet tel qu'il apparaît dans le nom de domaine. Le mot de passe a été donné au binet à la création de la base SQL ; le BR ne le possède pas et vous devez le passer à vos successeurs pour éviter de le perdre à tout jamais.&lt;br /&gt;
&lt;br /&gt;
=== Modification des fichiers du site ===&lt;br /&gt;
&lt;br /&gt;
Les fichiers se situent sur le serveur ostizan, dans le répertoire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;/hosting/www/nom_binet/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Avec Git (recommandé) ====&lt;br /&gt;
&lt;br /&gt;
ostizan dispose d’une installation [[Git]].&lt;br /&gt;
&lt;br /&gt;
Avec Git, vous pouvez garder un historique des versions successives de votre site, travailler à plusieurs, revenir en arrière quand vous avez cassé quelque chose, savoir qui a modifié quoi, quand … C’est un outil très puissant.&lt;br /&gt;
&lt;br /&gt;
'''Prérequis :''' ''avoir une clef [[SSH]] activée sur votre compte sur ostizan''&lt;br /&gt;
&lt;br /&gt;
Pour savoir comment configurer et construire un projet avec Git, référez-vous à la documentation. Vous pouvez héberger votre code chez nous sur [https://gitlab.binets.fr GitLab].&lt;br /&gt;
&lt;br /&gt;
Naviguez au dossier où vous voulez mettre votre site, par exemple &amp;lt;code&amp;gt;htdocs&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;cd /hosting/www/nom_binet/htdocs&amp;lt;/pre&amp;gt;&lt;br /&gt;
et initialisez un dépôt Git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git init&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si cela a fonctionné, le terminal répondra&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Initialized empty Git repository in /hosting/www/nom_binet/htdocs/.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ajoutez maintenant une ''remote'' qui pointera vers là où vous hébergez votre code, par exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git remote add origin git@gitlab.binets.fr:domaine/site.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
pour un site dont le code est hébergé sur le GitLab, ou&lt;br /&gt;
&lt;br /&gt;
Ensuite, faites&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;sh&amp;quot;&amp;gt;git pull origin master&amp;lt;/pre&amp;gt;&lt;br /&gt;
pour cloner le dépôt (si la ''remote'' que vous avez ajouté s’appelle &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; et que votre code est sur la branche &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== En SFTP ====&lt;br /&gt;
&lt;br /&gt;
Pour accéder aux fichiers, on peut utiliser un client sftp (comme [https://filezilla-project.org/download.php?type=client FileZilla] ou [https://winscp.net/eng/index.php WinSCP]) et accéder au serveur &amp;lt;code&amp;gt;sftp://id_sigma.binets.fr&amp;lt;/code&amp;gt; sur le port 22.&lt;br /&gt;
&lt;br /&gt;
Le serveur SFTP demande un login / mot de passe qui correspondent exactement à ceux du compte Sigma. Le dossier &amp;lt;code&amp;gt;sftp://id_sigma.binets.fr/www/id_sigma/htdocs/&amp;lt;/code&amp;gt; correspond au site &amp;lt;code&amp;gt;http://id_sigma.binets.fr/&amp;lt;/code&amp;gt;. Les fichiers qui ne sont pas dans htdocs ne sont pas accessibles directement par un navigateur, mais un script php peut y accéder.&lt;br /&gt;
&lt;br /&gt;
=== Avec visibilité extérieure ===&lt;br /&gt;
&lt;br /&gt;
Le BR a un partenariat avec la DSI qui lui permet d'exposer certains sites à l'extérieur. Ils feront l'objet d'[[un audit de sécurité]] par le BR et la DSI. Pour le passer, il faut respecter les dernières recommandations de sécurité, notamment pour tout ce qui est authentification, contenu dynamique. Notons cependant que cela ne devrait pas poser de problèmes pour les sites statiques. &lt;br /&gt;
&lt;br /&gt;
Les sites souhaitant un site avec visibilité depuis l'extérieur doivent dorénavant respecter la charte suivante :&lt;br /&gt;
&lt;br /&gt;
*Aucune information ne doit être diffusée qui pourrait nuire à l'image de l’École. (photos, vidéos, etc.)&lt;br /&gt;
*Le site doit avoir une qualité visuelle, si ce n'est professionnelle, du moins très correcte.&lt;br /&gt;
*Le site ne doit pas héberger de vidéos ou diffuser un flux vidéo (streaming). Toutes les vidéos du sites doivent être hébergées à l'extérieur. (Dalymotion, YouTube, etc.)&lt;br /&gt;
*Les images présentes sur le site ne doivent avoir une résolution suffisamment faible afin de ne pas saturer la bande passante vers l'extérieur.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Si le site concerne un événement extérieur avec un public de plus de 50 personnes, la DSI demande à ce que la DIRCOM soit prévenue.}}&lt;br /&gt;
&lt;br /&gt;
== Quotas ==&lt;br /&gt;
&lt;br /&gt;
Attention ! L'espace réservé à chaque binet est limité. Il faut se méfier quand on fait une copie, notamment a l'environnement virtuel. D'abord il pèse lourd, en plus il faudra que vous le remplaciez de toute façon. Autant ne pas le copier dès le départ...&lt;br /&gt;
Pour savoir si vous avez dépassé votre quota :&lt;br /&gt;
 quota -sg&lt;br /&gt;
Cette commande affiche, pour chaque binet, l'espace utilisé, une «soft limit» et la vraie («hard») limit.&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=BR&amp;diff=10321</id>
		<title>BR</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=BR&amp;diff=10321"/>
		<updated>2024-06-18T11:39:15Z</updated>

		<summary type="html">&lt;p&gt;Jean-nicolas.strauss : Création de la page de redirection vers le BR actuel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BR2022]]&lt;/div&gt;</summary>
		<author><name>Jean-nicolas.strauss</name></author>
	</entry>
</feed>