J’imagine que ce non-problème à déjà été résolu 200 fois, et qu’on en a déjà parlé un peu, parlons de création et d’activation de venv…
Déjà voilà à quoi ça ressemble chez moi :
Au début : pas de logo Python ça signifie que je ne suis pas dans un venv. Ensuite je tape venv
pour créer et activer un venv, mon prompt change avec un logo Python et sa version pour m’indiquer qu’il est activé.
(Oui mon laptop s’appelle seraph
et oui j’utilise un thème clair pour mon terminal, oui j’utilise bash. Rohh, c’est pas fini de juger les gens !?)
Donc en ce moment côté création/activation/désactivation de venv j’utilise direnv, avec une petite fonction bash de deux lignes pour se souvenir de ce qu’il faut taper :
venv()
{
printf "VIRTUAL_ENV=.venv\nlayout python3\n" > .envrc
direnv allow .
}
de cette manière dès que je cd
dans un dossier qui contient un venv, pouf il est activé, et dès que j’en sors pouf il est déactivé. Pour créer un venv dans un dossier j’ai juste à taper venv
, c’est le “layout python3” de direnv qui s’occupe de la création et de l’activation. le VIRTUAL_ENV=.venv
c’est pour dire à layout python3
où mettre le venv.
Ensuite il me faut une indication que mon venv est activé dans mon prompt, car direnv
ne le fait pas. À force de voir des élèves utiliser des prompts “kikoo-lol” je me suis demandé quels caractères unicode ils utilisaient pour faire ces “effets”. Bon bah rien de magique c’est juste 🭮 et 🭬, ou des trucs du genre, avec un peu de couleur.
Et donc une petite fonction bash pour décider s’il faut écrire quelque chose et quoi écrire, injecter ça dans PS1
avec un peu de couleurs et un peu d’unicode, une petite fonte ajoutée contenant un logo Python, et le résultat me convient.
Le code (attention, 42 lignes…):
Ça s’imbrique parfaitement dans emacs avec le module envrc
qui met à jour les variables d’environnement au niveau de chaque buffers. Et donc ça marche aussi parfaitement avec lsp-mode, en tout cas avec jedi-language-server qui découvre le venv grâce à la variable d’environnement VIRTUAL_ENV
: