pycache in Python verstehen: Alles, was du wissen musst
Updated on
Wenn du schon einmal ein Python-Skript ausgeführt hast, ist dir vielleicht ein Ordner namens __pycache__ in deinem Projekt aufgefallen. Er wirkt auf den ersten Blick unwichtig, spielt aber eine entscheidende Rolle dabei, dass Python deine Programme effizient ausführt. In diesem Leitfaden erklären wir, was der Ordner __pycache__ ist, warum Python ihn erzeugt und wie du ihn sicher verwalten oder entfernen kannst.
Python ist eine interpretierte Sprache, aber es interpretiert nicht bei jedem Lauf jede .py‑Datei komplett neu. Stattdessen kompiliert Python deinen Quellcode in Bytecode – eine leichte, low-level Darstellung, die schneller ausgeführt werden kann. Diese kompilierten Bytecode‑Dateien (mit der Endung .pyc) werden im Ordner __pycache__ gespeichert.
Möchtest du schnell Data Visualization aus einem Python Pandas DataFrame ohne Code erstellen?
PyGWalker ist eine Python-Bibliothek für Exploratory Data Analysis mit Visualization.
PyGWalker (opens in a new tab) verwandelt dein pandas- oder polars-DataFrame direkt im Jupyter Notebook in eine Tableau-ähnliche Oberfläche.
Was ist pycache in Python?
Der Ordner __pycache__ wird automatisch erzeugt, wenn Python ein Modul ausführt. Darin speichert Python .pyc‑Dateien – eine kompilierte Bytecode‑Version deiner .py‑Dateien.
Bytecode ist für eine schnellere Ausführung optimiert. Wenn du ein Skript startest, sucht Python nach einer aktuellen .pyc‑Datei:
- Wenn sie existiert und zum aktuellen Quellcode passt → lädt Python die
.pyc‑Datei direkt. - Wenn nicht → kompiliert Python den Quellcode neu, erzeugt eine neue
.pyc‑Datei und legt sie in__pycache__ab.
Warum die Dateinamen wie module.cpython-310.pyc aussehen
Moderne Python-Versionen versehen diese Dateien mit einem Interpreter‑Tag (z. B. cpython-311), damit mehrere Python‑Versionen ohne Konflikte nebeneinander existieren können.
Das ist besonders wichtig, wenn du Folgendes verwendest:
- Virtual Environments
- System-Python plus umgebungsspezifische Python-Installationen
- Tools wie pyenv, conda oder Docker‑Images
Wo befindet sich der pycache-Ordner?
Der Ordner __pycache__ erscheint im gleichen Verzeichnis wie das ausgeführte Python‑Modul.
Beispielstruktur:
my_project/
main.py
utils.py
**pycache**/
main.cpython-311.pyc
utils.cpython-311.pyc
Wenn du ein Modul aus einem anderen Verzeichnis importierst, wird auch in diesem Verzeichnis ein eigener __pycache__‑Ordner erzeugt.
In Virtual Environments
In Virtual Environments gibt es häufig viele __pycache__‑Ordner innerhalb der installierten Packages. Das ist normal – Package‑Imports erzeugen beim ersten Gebrauch .pyc‑Dateien.
Wie beschleunigt pycache Python-Skripte?
Das Ausführen eines Python-Skripts erfordert normalerweise:
- Parsen des Textes
- Aufbau eines Abstract Syntax Tree (AST)
- Kompilieren des AST in Bytecode
- Ausführen des Bytecodes
Die Schritte 1–3 werden übersprungen, wenn Python eine aktuelle .pyc‑Datei findet. Deshalb gilt:
- Der erste Lauf kann etwas langsamer sein
- Spätere Läufe sind schneller (besonders in großen Codebasen)
Hash-basierte pyc-Dateien (PEP 552)
Moderne Python-Versionen unterstützen sowohl:
- Zeitstempelbasierte
.pyc(Standard) - Hash-basierte
.pyc(für reproduzierbare Builds, Packaging, Docker‑Images)
Das macht die Bytecode‑Erzeugung in automatisierten oder containerisierten Umgebungen stabiler.
Kann ich den pycache-Ordner löschen?
Ja – das Löschen von __pycache__ ist unbedenklich.
Python legt den Ordner automatisch neu an, sobald du deine Skripte erneut ausführst. Der einzige Nachteil: Der nächste Lauf kann aufgrund der Neukompilierung etwas langsamer sein.
Um alle __pycache__‑Ordner rekursiv zu entfernen:
find . -type d -name __pycache__ -exec rm -r {} \+Häufige Anwendungsfälle zum Löschen von pycache
- Debugging von Import-Problemen
- Nach dem Umbenennen oder Verschieben von Modulen
- Beim Packaging für Deployments
- Um „Rauschen“ vor einem Git‑Commit oder Docker‑Build zu reduzieren
Wie deaktiviere ich die Erstellung von pycache-Dateien?
Du kannst die Erstellung von .pyc‑Dateien deaktivieren, indem du die Umgebungsvariable setzt:
export PYTHONDONTWRITEBYTECODE=1Wenn diese aktiv ist:
- erzeugt Python keine
.pyc‑Dateien mehr, - werden keine
__pycache__‑Ordner angelegt.
Das wird häufig genutzt in:
- Docker‑Images (zur Verringerung der Layer‑Größe)
- CI‑Pipelines
- kleinen Skripten, bei denen Performance keine große Rolle spielt
Um diese Einstellung dauerhaft zu machen, füge die Variable zu deiner Shell‑Konfiguration hinzu (z. B. ~/.bashrc).
Wie ignoriere ich pycache-Dateien in Git?
Da .pyc‑Dateien maschinenspezifisch und automatisch erzeugt sind, sollten sie nicht in die Versionskontrolle eingecheckt werden.
Füge Folgendes zu deiner .gitignore hinzu:
__pycache__/
*.pycDie Regel *.pyc ist optional, aber hilfreich, wenn ältere Python‑Versionen .pyc direkt neben der .py‑Datei ablegen.
Was passiert, wenn ich den pycache-Ordner lösche?
Nichts geht kaputt. Dein Skript läuft weiterhin normal.
Python wird einfach:
- das Fehlen der
.pyc‑Datei feststellen, - die
.py‑Datei neu kompilieren, - den Ordner
__pycache__und die.pyc‑Datei neu erzeugen.
Nur der erste Lauf nach dem Löschen ist etwas langsamer.
FAQ
1. Was ist der Zweck des Ordners __pycache__ in Python?
Der Ordner speichert kompilierte .pyc‑Bytecode‑Dateien, die dafür sorgen, dass Python bei späteren Läufen schneller starten kann.
2. Kann ich den Ordner __pycache__ löschen?
Ja. Das Löschen ist sicher. Python erzeugt ihn automatisch neu.
3. Wie kann ich __pycache__‑Dateien in Git ignorieren?
Füge Folgendes zu deiner .gitignore hinzu:
__pycache__/
*.pyc