Utiliser un environnement virtuel Python

2 min de lecture07 novembre 2026

Un environnement virtuel isole les dépendances d'un projet de celles du système. Sur un VPS, vous le créez et l'activez vous-même. Sur l'hébergement d'applications Python, c'est requirements.txt qui assure la reproductibilité, sans shell ni activation.

1. Pourquoi isoler les dépendances

Deux projets peuvent exiger deux versions incompatibles de la même bibliothèque. Installer globalement avec pip crée des conflits, et peut casser des outils fournis par la distribution. Un environnement virtuel contient son propre interpréteur lié, ses paquets et ses scripts dans un dossier dédié, généralement .venv.

Sur Debian 13, le paquet python3-venv fournit le module nécessaire :

Bash
sudo apt update
sudo apt install python3-venv

2. Créer et activer

Bash
cd /var/www/mon-app
python3 -m venv .venv
source .venv/bin/activate
python -V
pip install -r requirements.txt

source modifie le PATH de la session courante : python et pip pointent alors vers .venv. La commande deactivate revient à l'interpréteur système. Pour figer les versions réellement installées :

Bash
pip freeze > requirements.txt

Ajoutez .venv/ à .gitignore. Un environnement virtuel n'est pas portable : ses binaires et chemins absolus sont liés à la machine et au système. On le recrée, on ne le copie pas.

3. Sur l'hébergement d'applications

L'hébergement Python NeoHeberg ne donne ni shell ni accès root. Le panneau installe les dépendances depuis requirements.txt, puis lance la commande de démarrage, python main.py par défaut. Vous ne pouvez donc pas compter sur source .venv/bin/activate dans cette commande.

À la place :

  • listez toutes les dépendances directes dans requirements.txt ;
  • épinglez les versions (paquet==1.2.3) pour éviter une mise à jour surprise ;
  • testez l'installation dans un environnement virtuel local avant de redéployer ;
  • redémarrez l'application et lisez la console pour repérer un ModuleNotFoundError.

Les variables d'environnement se configurent dans le panneau, pas dans un fichier .env téléversé.

4. Sur un VPS avec systemd

Appeler directement le Python du venv évite toute activation dans le service :

INI
[Service]
User=app
WorkingDirectory=/var/www/mon-app
EnvironmentFile=/etc/mon-app.env
ExecStart=/var/www/mon-app/.venv/bin/python main.py

Après modification : sudo systemctl daemon-reload, puis sudo systemctl restart mon-app. Vérifiez avec systemctl status et journalctl -u mon-app -n 50.

5. Vérifier

  • which python doit pointer vers .venv/bin/python quand l'environnement est actif.
  • python -c "import sys; print(sys.prefix)" affiche le dossier du venv.
  • pip list ne doit contenir que les paquets du projet et leurs dépendances.
  • Sur l'hébergement géré, une réinstallation propre doit réussir sans étape manuelle.

Si un paquet compile des modules natifs, vérifiez qu'il dispose d'une roue binaire pour la version Python proposée. Sinon, choisissez une version compatible ou évitez cette dépendance.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi