O09 - Python : environnements virtuels, pip et exécution des scripts
Objectif
Installer proprement des bibliothèques Python sans casser le système (erreur
externally-managed-environment), et exécuter les scripts du dossierscripts/.
1. Pourquoi un environnement virtuel ?
Sur Pop!_OS 24.04, Debian 12+ et Arch, pip install en dehors d’un environnement virtuel est refusé (règle PEP 668) : le Python du système appartient au gestionnaire de paquets.
flowchart LR SYS["Python du système<br/>(géré par apt / pacman)"] -.-x|"pip install interdit"| PIP["pip"] P1["📁 discord-bot/.venv<br/>discord.py 2.x"] --- PY1["python isolé"] P2["📁 openfront-bot/.venv<br/>playwright"] --- PY2["python isolé"]
Chaque projet a ses propres bibliothèques, dans ses propres versions → pas de conflit.
2. Mode d’emploi
sudo apt install python3-venv python3-pip # Pop!_OS / Debian (inclus sur Arch : python)
cd ~/discord-bot
python3 -m venv .venv # créer (une fois)
source .venv/bin/activate # activer → l'invite affiche (.venv)
pip install -U pip
pip install discord.py python-dotenv # installer dans le venv
pip freeze > requirements.txt # figer les versions
deactivate # sortir
# Sur une autre machine :
python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txtFish/zsh : source .venv/bin/activate.fish / même commande qu’en bash pour zsh. Windows : .venv\Scripts\Activate.ps1.
| Besoin | Solution |
|---|---|
| Une bibliothèque pour un projet | venv + pip |
Un outil en ligne de commande pour toi (ex. tldr, ansible) | pipx install ansible (crée un venv par outil) |
| Une bibliothèque très courante | Paquet de la distribution : sudo apt install python3-requests / sudo pacman -S python-requests |
| Gestion moderne et rapide | uv (uv venv, uv pip install …, uv run script.py) |
Ne jamais forcer avec
sudo pip install --break-system-packagessur ton système : tu risques de casser des outils du système qui dépendent de Python.
3. Secrets : le fichier .env
# .env (à mettre dans .gitignore !)
DISCORD_TOKEN=xxxxxxxxxxxxxxxxxxxximport os
from dotenv import load_dotenv
load_dotenv() # lit le fichier .env
jeton_discord = os.getenv("DISCORD_TOKEN")4. Lancer les scripts du vault
Les scripts de scripts/maths et scripts/reseaux n’utilisent que la bibliothèque standard : pas besoin de venv.
cd "$HOME/obsidian/truc non trier/scripts"
python3 reseaux/calcul_ip.py 192.168.1.200/26
python3 reseaux/vlsm.py 10.10.0.0/22 Production=300 Commerce=120 RH=25
python3 maths/dijkstra.py A F "A-B:4 A-C:2 C-B:1 B-D:5 C-D:8 C-E:10 D-E:2 D-F:6 E-F:2"
chmod +x */*.py */*.sh # pour les lancer aussi avec ./scriptIndex complet des scripts : Scripts.
Voir aussi
- O02 - VS Code · O04 - Git et GitHub · V05 - Docker
- Retour : 00 - Index général