« Trucs et astuces » : différence entre les versions

De WikiBR
(Documentation de poetry)
Ligne 157 : Ligne 157 :


Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande <code>mamba install</code> au lieu de <code>pip install</code>, et le tout est joué.
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande <code>mamba install</code> au lieu de <code>pip install</code>, et le tout est joué.
=== Environnements python avec poetry ===
[https://python-poetry.org/ poetry] est un autre gestionnaire de dépendance extrêmement utile si vous développez en collaboratif notamment avec [[Git]]. Là où [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]] permet de réutiliser ses environnements, la logique de '''poetry''' est d'utiliser un environnement par projet.
L'intérêt est que '''poetry''' produit un fichier '''poetry.lock''' permettant de reproduire à l'identique l'environnement virtuel sur une autre machine en une commande, tout en gardant la possibilité d'effectuer des mises à jour des dépendances aisément.
Installation [https://python-poetry.org/docs/#installation ici]
Les principales commandes de '''poetry''' sont :
Création d'un environnement poetry :
poetry init
Cette commande permet d'initialiser '''poetry''' dans le dossier courant de manière interactive, en définissant le nom du projet, les auteurs et les dépendances.
Cette commande génère les fichiers <code>pyproject.toml</code>, qui contient toutes les informations du projet, et <code>poetry.lock</code>, qui contient l'état exact du projet (l'équivalent de <code>pip freeze</code>). Il est fortement recommandé de traquer ces fichiers avec [[Git]] si votre projet utilise [[Git]].
Installation d'un environnement '''poetry''' :
poetry install
Cette commande permet d'installer un environnement sur la base d'un fichier <code>poetry.lock</code> (typiquement suite à un <code>git clone</code>)
Ajout de dépendances :
poetry add <name>
Cette commande ajoute et installe la dépendance. La gestion des dépendances de poetry respecte [https://semver.org/ semver], c'est-à-dire qu'un projet peut indiquer être compatible avec toute version ultérieure de la dépendance ayant la même version majeure (c'est le cas par défaut). Cela est indiqué en ajoutant <code>^</code> à la version requise, par exemple <code>python = "^3.8"</code> (i.e. cela indique que le projet est compatible avec Python 3.8, 3.9, 3.10... mais pas 4.0)
Mettre à jour les dépendances :
poetry update
Lancer une commande dans l'environnement :
poetry run <commande>
Par exemple :
poetry run python mon_projet.py
Activer l'environnement :
poetry shell
Cette commande génère un shell dans l'environnement
Ces commandes sont détaillées en détail [https://python-poetry.org/docs/basic-usage/ ici]


=== Plusieurs versions de Node.js avec NVM ===
=== Plusieurs versions de Node.js avec NVM ===

Version du 14 janvier 2024 à 12:00

Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !

Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.

Extensions de navigateur recommandées

Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.

Note: Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.

uBlock Origin

ublock Origin est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.

Bitwarden

Bitwarden est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.

Return Youtube Dislike

Return Youtube Dislike est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de Youtube.

Dark Reader

Dark Reader est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.

L'appli Youtube sans pubs

Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir #Applications open source sur Android).

Youtube Revanced est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :

  • Blocage des pubs et sponsorisations (configurable)
  • Retour de l'affichage des dislikes
  • Lecture en arrière plan
  • Téléchargement de vidéos
  • Contrôle du son et de la luminosité avec des swipe gestures, etc.

Le site officiel, et un guide pour l'installation.

Remarque: même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application Settings -> Applications -> Applications par défaut -> Ouverture des liens -> ReVanced -> Adr. Web prises en charge, puis cocher les 4 adresses (testé sur téléphone Samsung).

Mise à jour: pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.

Github Copilot

Github Copilot est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !

Pour accéder gratuitement à Github Copilot, il suffit de:

  • Disposer d'un compte Github
  • S'inscrire comme étudiant sur education.github.com en ajoutant son adresse en polytechnique.edu comme preuve.
  • Une fois la vérification faite, configurer l'accès à Copilot depuis les settings de votre compte Github.

Et voilà ! Il n'y a plus qu'à installer l'extension Github Copilot dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !

Applications open source sur Android

Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : Droid-ify (bouton DOWNLOAD F-DROID) (disponible uniquement sur Android, évidemment).

Cette application est un Google Play pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture).

On vous recommande notamment l'application NewPipe, un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.

Gestionnaires de versions pour coder

Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).

C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.

Python

Pour le développement d'applis python, sites, etc : voir Pyenv.

Pour le développement de scripts scientifiques en python, avec utilisation de notebooks jupyter et shell IPython, etc : voir Mamba.

Environnements virtuels python avec Pyenv

Installation

Pyenv est un gestionnaire de versions Python qui permet de changer rapidement de version sans toucher à la version python utilisée par le système. Les versions sont installées dans /home/<username>/.pyenv/versions/ sous Linux, et C:\Users\<username>\.pyenv\versions\ sous Windows.

Installer pyenv sur Windows

Installer pyenv sur Linux (ou via votre gestionnaire de paquets).

Installer des versions de python

Pour lister les versions de python disponibles :

pyenv install --list

Pour lister des versions spécifiques :

pyenv install --list | grep 3.11 # Sur Linux
pyenv install --list | findstr 3.11 # Sur Windows

Pour installer une version :

pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée

Pour lister les versions disponibles via pyenv :

pyenv versions
Générer un environnement virtuel

Pour générer un environnement virtuel python à la racine d'un projet : Activer une version de python dans le shell:

pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell
pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier
pyenv global 3.11.3 # Toujours utiliser cette version, partout

Créer un environnement virtuel dans un dossier venv/ :

python -m venv venv

Activer l'environnement virtuel :

source venv/bin/activate # Sous Linux
.\venv\Scripts\activate # Sous Windows

Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. Note : VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.

Remarque : si votre projet est versionné avec Git, il ne faut pas commit votre venv! Ajoutez un fichier .gitignore à la racine de votre projet, et ajoutez une ligne venv dedans.

Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)

pip install <packages>
pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes

Pour générer un fichier requirements.txt afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :

pip freeze > requirements.txt
Environnement virtuel global

Pyenv permet aussi de générer des environnements virtuels globaux avec pyenv virtualenv, un plugin que vous pouvez installer ici. C'est similaire au fonctionnement de Mamba.

Créez un environnement virtuel global avec la commande suivante :

pyenv virtualenv <version> <nom de votre environnement global custom>

Vous pouvez ensuite l'activer comme les autres environnements avec

pyenv shell <nom de votre environnement global custom>

Environnements python avec Mamba

Vous connaissez peut-être déjà Conda, un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. Mamba en est une version entièrement réécrite en C++, bien plus rapide et performante.

Installation ici.

Mamba permet de créer des environnements virtuels dans /home/<username>/mambaforge-pypy3/envs (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !

Créer un environnement virtuel :

mamba create -n nom_de_lenvironnement <liste de packages>
mamba create -n nom_de_lenvironnement <liste de packages> python=3.10 # Avec une version spécifique de python

Exemple :

mamba create -n inf442 numpy pandas scikit-learn

Activation d'un environnement virtuel :

mamba activate inf442
mamba deactivate # Pour le désactiver

Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande mamba install au lieu de pip install, et le tout est joué.

Environnements python avec poetry

poetry est un autre gestionnaire de dépendance extrêmement utile si vous développez en collaboratif notamment avec Git. Là où Mamba permet de réutiliser ses environnements, la logique de poetry est d'utiliser un environnement par projet.

L'intérêt est que poetry produit un fichier poetry.lock permettant de reproduire à l'identique l'environnement virtuel sur une autre machine en une commande, tout en gardant la possibilité d'effectuer des mises à jour des dépendances aisément.

Installation ici

Les principales commandes de poetry sont :

Création d'un environnement poetry :

poetry init

Cette commande permet d'initialiser poetry dans le dossier courant de manière interactive, en définissant le nom du projet, les auteurs et les dépendances.

Cette commande génère les fichiers pyproject.toml, qui contient toutes les informations du projet, et poetry.lock, qui contient l'état exact du projet (l'équivalent de pip freeze). Il est fortement recommandé de traquer ces fichiers avec Git si votre projet utilise Git.

Installation d'un environnement poetry :

poetry install

Cette commande permet d'installer un environnement sur la base d'un fichier poetry.lock (typiquement suite à un git clone)

Ajout de dépendances :

poetry add <name>

Cette commande ajoute et installe la dépendance. La gestion des dépendances de poetry respecte semver, c'est-à-dire qu'un projet peut indiquer être compatible avec toute version ultérieure de la dépendance ayant la même version majeure (c'est le cas par défaut). Cela est indiqué en ajoutant ^ à la version requise, par exemple python = "^3.8" (i.e. cela indique que le projet est compatible avec Python 3.8, 3.9, 3.10... mais pas 4.0)

Mettre à jour les dépendances :

poetry update

Lancer une commande dans l'environnement :

poetry run <commande>

Par exemple :

poetry run python mon_projet.py

Activer l'environnement :

poetry shell

Cette commande génère un shell dans l'environnement

Ces commandes sont détaillées en détail ici

Plusieurs versions de Node.js avec NVM

Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer Node.js, un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).

Le gestionnaire de versions Node NVM permet d'installer et switcher rapidement entre plusieurs versions de Node.

Installer une version :

nvm install <version>
nvm install 16 # Pour Sigma, par exemple

Utiliser une version :

nvm ls # Lister les versions
nvm use <version> # Utiliser une version
node -v # Vérifier que la version est bien utilisée

Pour utiliser à nouveau la version système dans votre shell :

nvm use system

Utiliser Windows Subsystem for Linux pour faire du C++

L'environnement de Windows est peu optimisé pour faire du C++. Le C++ est un langage qui, contrairement à python, javascript, Go, Rust... n'a pas de gestionnaire de paquets. Il est donc incroyablement difficile d'installer et utiliser des librairies supplémentaires sur un système d'exploitation qui n'est pas fait pour ça (Windows) ! Ce problème ne se pose pas sous Linux, dont le système de fichiers et les gestionnaires de paquets intégrés fonctionnent très bien avec ce langage.

Heureusement, Windows dispose d'un système de machines virtuelles légères pour utiliser Linux dans un terminal. Voici un guide pour la mise en place de WSL sur une machine Windows. Note: le script fourni dans le guide a été conçu pour mettre en place l'environnement c++ pour inf442. Si vous ne suivez pas ce cours, il vous suffit juste d'installer les outils de développement c++ avec la commande apt-get install -y build-essential

Le guide.

Le script.

Guide réalisé par Thibaut de Saivre, VPrez BR21. Contactez-moi si vous avez un problème avec ce setup