Utiliser un environnement virtuel Python
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 :
sudo apt update
sudo apt install python3-venv2. Créer et activer
cd /var/www/mon-app
python3 -m venv .venv
source .venv/bin/activate
python -V
pip install -r requirements.txtsource 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 :
pip freeze > requirements.txtAjoutez .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 :
[Service]
User=app
WorkingDirectory=/var/www/mon-app
EnvironmentFile=/etc/mon-app.env
ExecStart=/var/www/mon-app/.venv/bin/python main.pyAprè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 pythondoit pointer vers.venv/bin/pythonquand l'environnement est actif.python -c "import sys; print(sys.prefix)"affiche le dossier du venv.pip listne 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
- Lire les logs d'une application PythonComprendre stdout, stderr, le module logging et les tracebacks dans la console du panneau.
- Comprendre les limites de ressourcesRAM, CPU et disque : mesurer, reconnaître l'épuisement et choisir l'offre adaptée.
- Configurer les variables d'environnement PythonLire les variables avec os.environ, les définir dans le panneau et faire tourner les secrets.