Deutsch

Python, pip und virtuelle Umgebungen auf einem Ubuntu-24.04-VPS

2 min
VPS/VDS-Hosting

Ubuntu 24.04 bringt Python 3.12 mit, doch Pakete mit einem einfachen pip zu installieren scheitert inzwischen mit der Meldung „externally-managed-environment“. Die Lösung: jedes Projekt in einer eigenen virtuellen Umgebung isolieren. Diese Anleitung zeigt, wie Sie Ihren VPS Linux Infrawire vorbereiten, Abhängigkeiten sauber verwalten und eine Anwendung dauerhaft als systemd-Dienst betreiben.

📋 Voraussetzungen

  • Ein VPS mit Ubuntu 24.04 oder Debian 12 und SSH-Root-Zugang (IP und Root-Passwort stehen in Ihrem Kundenbereich)
  • Ein Python-Projekt oder ein einfaches Testskript
  • Grundkenntnisse in der Kommandozeile

1. Python 3, pip und venv installieren

Python 3 ist meist vorinstalliert, pip und das venv-Modul sind jedoch eigene Pakete.

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

2. Den PEP-668-Fehler verstehen

Wenn Sie als root unter Ubuntu 24.04 oder Debian 12 pip install requests ausführen, erscheint:

TEXT
error: externally-managed-environment

Dieser Schutz (PEP 668) verhindert, dass pip Dateien überschreibt, die apt gehören, und Systemwerkzeuge beschädigt. Umgehen Sie ihn nicht mit --break-system-packages. Nutzen Sie stattdessen eine der folgenden sauberen Möglichkeiten.

3. Virtuelle Umgebung erstellen

Eine virtuelle Umgebung ist eine private Kopie von Python und pip für ein einzelnes Projekt.

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

Der Prompt beginnt jetzt mit (venv). Mit deactivate verlassen Sie die Umgebung.

4. Abhängigkeiten mit requirements.txt verwalten

Halten Sie die exakten Versionen fest, damit sich das Projekt auf einem anderen Server identisch aufbauen lässt.

Bash
pip freeze > requirements.txt # Auf einem frischen System python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

5. Kommandozeilenwerkzeuge mit pipx installieren

Für eigenständige Werkzeuge (httpie, yt-dlp, black ...) gibt pipx jedem eine eigene, versteckte virtuelle Umgebung und stellt den Befehl global bereit.

Bash
apt install -y pipx pipx ensurepath pipx install httpie

Öffnen Sie danach eine neue Shell, damit der aktualisierte PATH geladen wird. Für eine Bibliothek mit Debian-Paket ist auch apt install python3-requests eine gültige Wahl.

6. Die Anwendung als systemd-Dienst betreiben

Legen Sie einen eigenen unprivilegierten Benutzer an und danach eine Unit, die den Interpreter aus der virtuellen Umgebung startet (hier Gunicorn mit einem Flask-Objekt app in app.py).

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

Erstellen Sie /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

Setzen Sie einen Reverse-Proxy wie nginx vor Port 8000, um die Anwendung im Internet bereitzustellen.

✅ Prüfen

Bash
which python # muss bei aktivierter Umgebung nach /opt/myapp/venv zeigen pip list systemctl status myapp --no-pager journalctl -u myapp -n 50 --no-pager curl -I http://127.0.0.1:8000

🔧 Fehlerbehebung

The virtual environment was not created successfully because ensurepip is not available : Das venv-Paket fehlt. Installieren Sie es mit apt install python3-venv (oder python3.12-venv) und wiederholen Sie den Befehl.

status=203/EXEC in systemd : Der Pfad in ExecStart ist falsch, oder die Datei ist für den Dienstbenutzer nicht ausführbar. Prüfen Sie mit ls -l /opt/myapp/venv/bin/gunicorn und den oben gesetzten Besitzrechten.

ModuleNotFoundError nur unter systemd : Der Dienst nutzt das System-Python statt der virtuellen Umgebung. Rufen Sie in ExecStart immer /opt/myapp/venv/bin/python oder die Binärdatei in venv/bin auf.

pip: command not found : Verwenden Sie python3 -m pip oder aktivieren Sie zuerst die virtuelle Umgebung.


🎉 Ihre Python-Projekte sind jetzt isoliert, reproduzierbar und laufen als zuverlässiger Dienst!

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.