Zum Inhalt springen
Python Anfรคnger 2 min

pip und Virtual Environments in Python

Lerne, wie du mit pip externe Packages installierst, Virtual Environments erstellst und deine Python-Projekte sauber isolierst.

Aktualisiert:

Was ist pip?

pip steht fuer โ€œPip Installs Packagesโ€ und ist der Package-Installer fuer Python. Damit kannst du tausende von Bibliotheken aus dem Internet herunterladen und in deinen Projekten verwenden.

# Pruefen, ob pip installiert ist
pip --version
# pip 24.0 from /usr/lib/python3.12/site-packages/pip (python 3.12)

Stell dir pip wie einen App Store fuer Python vor: Du sagst, was du brauchst, und pip laedt es herunter, installiert es und kuemmert sich um Abhaengigkeiten.


pip โ€” Die wichtigsten Befehle

Packages installieren

# Ein Package installieren
pip install requests

# Eine bestimmte Version installieren
pip install requests==2.31.0

# Mindestversion angeben
pip install requests>=2.28.0

# Mehrere Packages auf einmal
pip install requests flask pandas

Packages entfernen

# Ein Package deinstallieren
pip uninstall requests

# Ohne Nachfrage deinstallieren
pip uninstall requests -y

Installierte Packages anzeigen

# Alle installierten Packages auflisten
pip list

# Beispielausgabe:
# Package    Version
# ---------- -------
# pip        24.0
# requests   2.31.0
# flask      3.0.0
# ...

Package-Informationen

# Details zu einem Package
pip show requests

# Ausgabe:
# Name: requests
# Version: 2.31.0
# Summary: Python HTTP for Humans.
# Home-page: https://requests.readthedocs.io
# ...

Veraltete Packages finden

# Zeige Packages, fuer die Updates verfuegbar sind
pip list --outdated

# Ein bestimmtes Package aktualisieren
pip install --upgrade requests

# pip selbst aktualisieren
pip install --upgrade pip

Freeze โ€” Alle Versionen einfrieren

# Alle installierten Packages mit exakten Versionen ausgeben
pip freeze

# Ausgabe:
# certifi==2024.2.2
# charset-normalizer==3.3.2
# idna==3.6
# requests==2.31.0
# urllib3==2.2.0

PyPI โ€” Der Python Package Index

PyPI (Python Package Index) ist die offizielle Quelle fuer Python-Packages. Unter pypi.org findest du ueber 500.000 Packages.

Wenn du pip install requests ausfuehrst, laedt pip das Package von PyPI herunter.

Packages auf PyPI suchen

# Im Terminal suchen
pip search requests  # Hinweis: Oft deaktiviert

# Besser: Direkt auf pypi.org suchen

Tipp: Suche lieber direkt auf pypi.org oder nutze eine Suchmaschine. Die pip search-Funktion ist auf den offiziellen Servern oft deaktiviert.


Warum Virtual Environments?

Stell dir folgendes Szenario vor:

  • Projekt A braucht requests Version 2.28
  • Projekt B braucht requests Version 2.31
  • Beide Projekte sind auf dem gleichen Computer

Ohne Virtual Environments gibt es eine globale Python-Installation mit einer Version jedes Packages. Das fuehrt zu Konflikten!

Virtual Environments loesen dieses Problem: Jedes Projekt bekommt seine eigene, isolierte Python-Umgebung mit eigenen Packages.

Computer
โ”œโ”€โ”€ Projekt A/
โ”‚   โ””โ”€โ”€ venv/          # Eigene Umgebung
โ”‚       โ””โ”€โ”€ requests 2.28
โ”œโ”€โ”€ Projekt B/
โ”‚   โ””โ”€โ”€ venv/          # Eigene Umgebung
โ”‚       โ””โ”€โ”€ requests 2.31
โ””โ”€โ”€ System-Python      # Bleibt sauber

Vorteile:

  • Keine Versionskonflikte zwischen Projekten
  • Saubere System-Python-Installation (nicht mit Packages zugemuellt)
  • Reproduzierbar: Andere Entwickler koennen exakt die gleiche Umgebung aufsetzen
  • Einfach loeschbar: Virtual Environment loeschen und fertig

venv erstellen

Python bringt das Modul venv von Haus aus mit. So erstellst du ein Virtual Environment:

# In deinen Projektordner wechseln
cd mein_projekt

# Virtual Environment erstellen
python -m venv venv

Der letzte Parameter (venv) ist der Name des Ordners โ€” du kannst ihn frei waehlen, aber venv ist die gaengige Konvention.

Was passiert dabei? Python erstellt einen Ordner mit:

venv/
โ”œโ”€โ”€ bin/          (Linux/macOS) oder Scripts/ (Windows)
โ”‚   โ”œโ”€โ”€ python    # Eigene Python-Kopie
โ”‚   โ”œโ”€โ”€ pip       # Eigenes pip
โ”‚   โ””โ”€โ”€ activate  # Aktivierungsskript
โ”œโ”€โ”€ lib/          # Hier landen installierte Packages
โ””โ”€โ”€ pyvenv.cfg    # Konfiguration

venv aktivieren

Nach dem Erstellen musst du das Virtual Environment aktivieren:

Windows (CMD)

venv\Scripts\activate

Windows (PowerShell)

venv\Scripts\Activate.ps1

Falls du in PowerShell eine Fehlermeldung bekommst, musst du die Ausfuehrungsrichtlinie aendern: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

macOS / Linux

source venv/bin/activate

Woher weiss ich, dass es aktiv ist?

Nach der Aktivierung siehst du den Namen des Environments in deiner Kommandozeile:

(venv) $ python --version
Python 3.12.0

(venv) $ pip list
Package    Version
---------- -------
pip        24.0

Die Klammern (venv) am Anfang zeigen dir: Du arbeitest jetzt in der isolierten Umgebung.

Deaktivieren

deactivate

Danach bist du wieder in der normalen System-Python-Umgebung.


requirements.txt โ€” Abhaengigkeiten verwalten

Die Datei requirements.txt ist der Standard, um die Abhaengigkeiten eines Projekts festzuhalten. Andere Entwickler (oder du selbst auf einem anderen Computer) koennen damit exakt die gleiche Umgebung aufsetzen.

Erstellen

# Alle installierten Packages mit Versionen speichern
pip freeze > requirements.txt

Die Datei sieht dann so aus:

# requirements.txt
certifi==2024.2.2
charset-normalizer==3.3.2
flask==3.0.0
idna==3.6
requests==2.31.0
urllib3==2.2.0

Aus requirements.txt installieren

# Alle Packages aus der Datei installieren
pip install -r requirements.txt

Manuell pflegen

Du kannst die requirements.txt auch manuell erstellen und pflegen:

# requirements.txt -- Mein Webprojekt
flask>=3.0
requests>=2.28
python-dotenv>=1.0
gunicorn>=21.2

Hier werden Mindestversionen statt exakter Versionen angegeben โ€” flexibler, aber weniger reproduzierbar.


Der typische Workflow

So sieht der Workflow fuer ein neues Python-Projekt aus:

# 1. Projektordner erstellen
mkdir mein_projekt
cd mein_projekt

# 2. Virtual Environment erstellen
python -m venv venv

# 3. Aktivieren
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

# 4. Packages installieren
pip install requests flask

# 5. Abhaengigkeiten speichern
pip freeze > requirements.txt

# 6. Code schreiben und ausfuehren
python main.py

# 7. Am Ende: Deaktivieren
deactivate

Und wenn du das Projekt auf einem neuen Rechner einrichtest:

# 1. Projekt klonen (z.B. von GitHub)
git clone https://github.com/user/mein_projekt.git
cd mein_projekt

# 2. Virtual Environment erstellen
python -m venv venv

# 3. Aktivieren
source venv/bin/activate  # bzw. Windows-Variante

# 4. Abhaengigkeiten installieren
pip install -r requirements.txt

# 5. Fertig -- alles ist wie auf dem Originalrechner!

.gitignore nicht vergessen!

Der venv-Ordner gehoert nicht in die Versionskontrolle (Git). Er ist gross und kann auf jedem System neu erstellt werden. Fuege ihn zur .gitignore hinzu:

# .gitignore
venv/
__pycache__/
*.pyc
.env

Was soll ins Git-Repository:

  • Dein Quellcode (.py-Dateien)
  • requirements.txt
  • Konfigurationsdateien

Was nicht ins Repository soll:

  • venv/ (kann neu erstellt werden)
  • __pycache__/ (kompilierter Bytecode)
  • .env (Geheimnisse wie Passwoerter/API-Keys)

Populaere Python-Packages

Hier eine Auswahl beliebter Packages, die du mit pip installieren kannst:

Webentwicklung

PackageBeschreibungInstallation
flaskLeichtgewichtiges Web-Frameworkpip install flask
djangoVollstaendiges Web-Frameworkpip install django
fastapiModernes API-Frameworkpip install fastapi

Datenverarbeitung

PackageBeschreibungInstallation
pandasDatenanalyse und -manipulationpip install pandas
numpyNumerische Berechnungenpip install numpy
matplotlibDiagramme und Grafikenpip install matplotlib

HTTP und APIs

PackageBeschreibungInstallation
requestsHTTP-Anfragen einfach gemachtpip install requests
httpxModernes HTTP (async-faehig)pip install httpx
beautifulsoup4HTML/XML parsenpip install beautifulsoup4

Werkzeuge

PackageBeschreibungInstallation
python-dotenvUmgebungsvariablen aus .envpip install python-dotenv
pytestTesting-Frameworkpip install pytest
blackCode-Formatterpip install black
ruffSchneller Linterpip install ruff
pillowBildverarbeitungpip install pillow

Praxis: requests installieren und nutzen

Lass uns ein echtes Package installieren und verwenden. requests ist die beliebteste Bibliothek fuer HTTP-Anfragen.

Installation

# Virtual Environment aktiv? Dann:
pip install requests

Einfache GET-Anfrage

import requests

# Daten von einer API abrufen
antwort = requests.get("https://jsonplaceholder.typicode.com/users/1")

# Statuscode pruefen
print(f"Status: {antwort.status_code}")  # 200 = Erfolg

# JSON-Daten auslesen
daten = antwort.json()
print(f"Name: {daten['name']}")
print(f"Email: {daten['email']}")
print(f"Stadt: {daten['address']['city']}")

Liste von Daten abrufen

import requests

antwort = requests.get("https://jsonplaceholder.typicode.com/posts")
beitraege = antwort.json()

print(f"Anzahl Beitraege: {len(beitraege)}")
print()

# Die ersten 5 Beitraege anzeigen
for beitrag in beitraege[:5]:
    print(f"#{beitrag['id']}: {beitrag['title'][:50]}...")

Fehlerbehandlung

import requests

def daten_abrufen(url):
    """Ruft Daten von einer URL ab mit Fehlerbehandlung."""
    try:
        antwort = requests.get(url, timeout=10)
        antwort.raise_for_status()  # Fehler bei 4xx/5xx
        return antwort.json()
    except requests.exceptions.ConnectionError:
        print("Keine Internetverbindung!")
        return None
    except requests.exceptions.Timeout:
        print("Zeitlimit ueberschritten!")
        return None
    except requests.exceptions.HTTPError as fehler:
        print(f"HTTP-Fehler: {fehler}")
        return None

# Test
daten = daten_abrufen("https://jsonplaceholder.typicode.com/users")
if daten:
    for benutzer in daten:
        print(f"  {benutzer['name']} ({benutzer['email']})")

Wetter-Abfrage (Beispiel-Konzept)

import requests

def wetter_abrufen(stadt):
    """
    Beispiel fuer eine Wetter-API-Abfrage.
    Hinweis: Du brauchst einen API-Key von einem Wetterdienst.
    """
    api_key = "dein_api_key_hier"  # z.B. von openweathermap.org
    url = f"https://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": stadt,
        "appid": api_key,
        "units": "metric",
        "lang": "de"
    }

    antwort = requests.get(url, params=params, timeout=10)
    if antwort.status_code == 200:
        daten = antwort.json()
        print(f"Wetter in {stadt}:")
        print(f"  Temperatur: {daten['main']['temp']}ยฐC")
        print(f"  Beschreibung: {daten['weather'][0]['description']}")
    else:
        print(f"Fehler: {antwort.status_code}")

# wetter_abrufen("Berlin")  # Braucht einen gueltigen API-Key

Uebungen

Uebung 1: Eigenes Projekt aufsetzen

Erstelle ein neues Projekt mit Virtual Environment und installiere requests:

# 1. Ordner erstellen
mkdir api_projekt
cd api_projekt

# 2. venv erstellen und aktivieren
python -m venv venv
source venv/bin/activate  # bzw. Windows-Variante

# 3. requests installieren
pip install requests

# 4. requirements.txt erstellen
pip freeze > requirements.txt

# 5. Pruefe den Inhalt
pip list

Uebung 2: API-Daten abrufen

Erstelle ein Skript, das Benutzerdaten von einer API abruft und huebsch formatiert ausgibt:

# api_benutzer.py
import requests

def benutzer_laden():
    """Laedt Benutzer von der JSONPlaceholder-API."""
    url = "https://jsonplaceholder.typicode.com/users"
    antwort = requests.get(url, timeout=10)
    antwort.raise_for_status()
    return antwort.json()

def benutzer_anzeigen(benutzer_liste):
    """Zeigt eine formatierte Liste der Benutzer an."""
    print("=" * 50)
    print("  BENUTZERLISTE")
    print("=" * 50)
    for b in benutzer_liste:
        print(f"\n  Name:    {b['name']}")
        print(f"  E-Mail:  {b['email']}")
        print(f"  Stadt:   {b['address']['city']}")
        print(f"  Firma:   {b['company']['name']}")
        print("-" * 50)

if __name__ == "__main__":
    try:
        benutzer = benutzer_laden()
        benutzer_anzeigen(benutzer)
    except Exception as fehler:
        print(f"Fehler beim Laden: {fehler}")

Uebung 3: requirements.txt verstehen

Erstelle manuell eine requirements.txt fuer ein Webprojekt und installiere die Packages:

# requirements.txt
flask>=3.0
requests>=2.28
python-dotenv>=1.0
pip install -r requirements.txt
pip list  # Pruefe, was installiert wurde

Pro-Tipp: Python-Version im Virtual Environment

Das Virtual Environment nutzt immer die Python-Version, mit der es erstellt wurde. Wenn du mehrere Python-Versionen installiert hast, kannst du gezielt waehlen:

# Mit Python 3.11 erstellen
python3.11 -m venv venv

# Mit Python 3.12 erstellen
python3.12 -m venv venv

# Auf Windows oft:
py -3.12 -m venv venv

Ein weiterer Tipp: Loesche ein Virtual Environment nie mit pip uninstall oder aehnlichem. Loesche einfach den ganzen venv-Ordner und erstelle bei Bedarf ein neues. Virtual Environments sind Wegwerfprodukte โ€” die requirements.txt ist das, was zaehlt!

Zurรผck zum Python Kurs