Python, pip et environnements virtuels sur un VPS Ubuntu 24.04

2 min
Hébergement VPS/VDS

Ubuntu 24.04 fournit Python 3.12, mais installer des paquets avec un simple pip échoue désormais avec l'erreur « externally-managed-environment ». La solution consiste à isoler chaque projet dans un environnement virtuel. Ce guide montre comment préparer votre VPS Linux Infrawire, gérer proprement les dépendances et maintenir une application active comme service systemd.

📋 Prérequis

  • Un VPS sous Ubuntu 24.04 ou Debian 12 avec accès SSH root (IP et mot de passe root dans votre espace client)
  • Un projet Python ou un simple script pour tester
  • Des notions de base en ligne de commande

1. Installer Python 3, pip et venv

Python 3 est généralement préinstallé, mais pip et le module venv sont des paquets distincts.

Bash
apt update apt install -y python3 python3-pip python3-venv python3-dev build-essential python3 --version pip3 --version

2. Comprendre l'erreur PEP 668

Lancer pip install requests en root sur Ubuntu 24.04 ou Debian 12 affiche :

TEXT
error: externally-managed-environment

Cette protection (PEP 668) empêche pip d'écraser des fichiers gérés par apt et de casser les outils système. Ne la contournez pas avec --break-system-packages. Utilisez l'une des trois options propres ci-dessous.

3. Créer un environnement virtuel

Un environnement virtuel est une copie privée de Python et de pip dédiée à un projet.

Bash
mkdir -p /opt/myapp && cd /opt/myapp python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install requests flask gunicorn

L'invite commence maintenant par (venv). Quittez l'environnement avec deactivate.

4. Gérer les dépendances avec requirements.txt

Figez les versions exactes pour pouvoir reconstruire le projet à l'identique sur un autre serveur.

Bash
pip freeze > requirements.txt # Sur une machine neuve python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

5. Installer des outils en ligne de commande avec pipx

Pour les outils autonomes (httpie, yt-dlp, black...), pipx donne à chacun son propre environnement virtuel caché et expose la commande globalement.

Bash
apt install -y pipx pipx ensurepath pipx install httpie

Ouvrez ensuite un nouveau shell pour charger le PATH mis à jour. Pour une bibliothèque disponible en paquet Debian, apt install python3-requests est aussi un choix valable.

6. Lancer l'application comme service systemd

Créez un utilisateur dédié sans privilèges, puis une unité qui démarre l'interpréteur de l'environnement virtuel (ici Gunicorn servant un objet Flask nommé app dans app.py).

Bash
useradd --system --home /opt/myapp --shell /usr/sbin/nologin myapp chown -R myapp:myapp /opt/myapp

Créez /etc/systemd/system/myapp.service :

INI
1[Unit] 2Description=My Python application 3After=network.target 4 5[Service] 6User=myapp 7WorkingDirectory=/opt/myapp 8ExecStart=/opt/myapp/venv/bin/gunicorn --bind 127.0.0.1:8000 app:app 9Restart=on-failure 10RestartSec=5 11 12[Install] 13WantedBy=multi-user.target
Bash
systemctl daemon-reload systemctl enable --now myapp

Placez un reverse proxy comme nginx devant le port 8000 pour l'exposer sur Internet.

✅ Vérifier

Bash
which python # doit pointer dans /opt/myapp/venv une fois activé pip list systemctl status myapp --no-pager journalctl -u myapp -n 50 --no-pager curl -I http://127.0.0.1:8000

🔧 Dépannage

The virtual environment was not created successfully because ensurepip is not available : le paquet venv manque. Installez-le avec apt install python3-venv (ou python3.12-venv) et relancez la commande.

status=203/EXEC dans systemd : le chemin de ExecStart est faux ou le fichier n'est pas exécutable par l'utilisateur du service. Vérifiez avec ls -l /opt/myapp/venv/bin/gunicorn et les droits définis plus haut.

ModuleNotFoundError uniquement sous systemd : le service utilise le Python du système au lieu de l'environnement virtuel. Appelez toujours /opt/myapp/venv/bin/python ou le binaire de venv/bin dans ExecStart.

pip: command not found : utilisez python3 -m pip ou activez d'abord l'environnement virtuel.


🎉 Vos projets Python sont maintenant isolés, reproductibles et exécutés comme un service fiable !

Restez à jour avec les dernières offres, réductions et promotions spéciales.

Voir les promotions

Nous utilisons des cookies

Nous utilisons des cookies analytiques pour améliorer votre expérience sur notre site. Aucune donnée n'est revendue à des tiers. En savoir plus dans notre politique de confidentialité.