Skip to content

Verständnis von pycache in Python: Alles, was Sie wissen müssen

Updated on

Wenn Sie jemals ein Python-Skript ausgeführt haben, haben Sie vielleicht einen seltsamen Ordner bemerkt, der in Ihrem Projektverzeichnis erstellt wird. Dieser Ordner, namens __pycache__, mag anfangs mysteriös erscheinen, spielt jedoch eine entscheidende Rolle für die Ausführung Ihrer Python-Skripte. In diesem Artikel wird der __pycache__-Ordner entschlüsselt und erklärt, wofür er dient, wie er funktioniert und wie Sie ihn effektiv in Ihren Python-Projekten verwalten können.

Python ist eine interpretierte Sprache, was bedeutet, dass sie Ihren Quellcode in ein Format umwandelt, das Ihr Computer verstehen und ausführen kann. Dieser Umwandlungsprozess kann einige Zeit in Anspruch nehmen, insbesondere für größere Skripte. Um diesen Prozess zu beschleunigen, speichert Python den umgewandelten Code in einem __pycache__-Ordner in Form von .pyc-Dateien. Diese Dateien sind eine Form von Bytecode, den Python viel schneller als den ursprünglichen Quellcode ausführen kann.

Möchten Sie schnell Visualisierungen von Python-Pandas-Datenrahmen ohne Code erstellen?

PyGWalker ist eine Python-Bibliothek für explorative Datenanalyse mit Visualisierung. PyGWalker (opens in a new tab) kann Ihren Workflow für die Datenanalyse und -visualisierung in Jupyter Notebook vereinfachen, indem es Ihren Pandas-Datenrahmen (und Polars-Datenrahmen) in eine Tableau-ähnliche Benutzeroberfläche für die visuelle Exploration verwandelt.

PyGWalker für die Datenvisualisierung (opens in a new tab)

Was ist pycache in Python?

Der __pycache__-Ordner ist ein Verzeichnis, das Python in Ihrem Projekt erstellt, wenn Sie ein Skript ausführen. Dieser Ordner enthält .pyc-Dateien, die kompilierte Versionen Ihrer Python-Skripte sind. Diese Dateien sind in einem Format namens Bytecode, das eine niederstufige Anweisungssammlung ist, die von einem Python-Interpreter ausgeführt werden kann.

Wenn Sie ein Python-Skript ausführen, überprüft der Interpreter zuerst, ob im __pycache__-Ordner eine entsprechende .pyc-Datei vorhanden ist. Wenn dies der Fall ist und die .pyc-Datei aktuell ist, wird Python diese Datei anstelle des ursprünglichen Skripts ausführen. Dies liegt daran, dass die Ausführung von Bytecode viel schneller ist als das Interpretieren von Quellcode.

Wenn die .pyc-Datei jedoch veraltet ist (d. h. das Quellskript wurde seit der Erstellung der .pyc-Datei geändert) oder wenn überhaupt keine .pyc-Datei vorhanden ist, wird Python das Skript neu kompilieren und die .pyc-Datei im __pycache__-Ordner aktualisieren oder erstellen.

Wo befindet sich der pycache-Ordner?

Der __pycache__-Ordner befindet sich im gleichen Verzeichnis wie das ausgeführte Python-Skript. Wenn Sie beispielsweise ein Skript mit dem Namen main.py in einem Verzeichnis mit dem Namen my_project haben und main.py ausführen, wird ein __pycache__-Ordner im Verzeichnis my_project erstellt.

Im __pycache__-Ordner finden Sie .pyc-Dateien, die den jeweiligen Python-Skripten entsprechen, die im übergeordneten Verzeichnis ausgeführt wurden. Die Namen dieser Dateien entsprechen den Namen der ursprünglichen Skripte, jedoch mit der Erweiterung .pyc anstelle von .py.

Wie beschleunigt pycache die Ausführung von Python-Skripten?

Der __pycache__-Ordner und seine .pyc-Dateien helfen dabei, die Ausführung von Python-Skripten zu beschleunigen, indem sie Bytecode speichern, der eine vorkompilierte Version Ihres Skripts ist. Bytecode ist für Python schneller ausführbar als der ursprüngliche Quellcode, da es ein niederstufiges Format ist, das dem Maschinencode nahe kommt.

Wenn Sie ein Python-Skript ausführen, muss der Interpreter den Quellcode analysieren, in einen abstrakten Syntaxbaum (AST) konvertieren und diesen AST dann in Bytecode kompilieren. Dieser Prozess kann einige Zeit dauern, insbesondere bei größeren Skripten.

Kann ich den pycache-Ordner löschen?

Ja, Sie können den __pycache__-Ordner löschen. Das Löschen dieses Ordners hat keine Auswirkungen auf die Ausführung Ihrer Python-Skripte. Bei erneuter Ausführung der Skripte wird Python sie jedoch in Bytecode neu kompilieren müssen, was möglicherweise die anfängliche Ausführung etwas verlangsamt. Dies liegt daran, dass Python den __pycache__-Ordner und die darin enthaltenen .pyc-Dateien neu erstellen muss.

Wenn Sie Bedenken haben, dass der __pycache__-Ordner Ihr Projektverzeichnis durcheinanderbringt, können Sie einen einfachen Befehl verwenden, um alle __pycache__-Ordner rekursiv zu löschen. So können Sie es tun:

find . -type d -name __pycache__ -exec rm -r {} \+

Dieser Befehl findet alle Verzeichnisse mit dem Namen __pycache__ im aktuellen Verzeichnis und in seinen Unterverzeichnissen und löscht sie.

Wie deaktiviere ich die Erstellung von pycache-Dateien in Python?

Obwohl der __pycache__-Ordner und seine .pyc-Dateien die Ausführung Ihrer Python-Skripte beschleunigen können, gibt es möglicherweise Situationen, in denen Sie ihre Erstellung deaktivieren möchten. Beispielsweise arbeiten Sie möglicherweise an einem kleinen Skript, bei dem die Kompilierungszeit vernachlässigbar ist, oder Sie möchten vermeiden, dass Ihr Projektverzeichnis mit __pycache__-Ordnern überfüllt wird.

Sie können die Erstellung von __pycache__-Ordnern und .pyc-Dateien deaktivieren, indem Sie die Umgebungsvariable PYTHONDONTWRITEBYTECODE setzen. Sie können dies direkt in Ihrem Terminal mit dem folgenden Befehl tun:

export PYTHONDONTWRITEBYTECODE=1

Nach dem Ausführen dieses Befehls erstellt Python bis zum Ende Ihrer aktuellen Terminal-Sitzung keine __pycache__-Ordner oder .pyc-Dateien mehr. Wenn Sie diese Änderung dauerhaft machen möchten, können Sie die oben genannte Zeile zu Ihrer Shell-Startdatei hinzufügen (z. B. ~/.bashrc oder ~/.bash_profile für die Bash-Shell).

Wie ignoriere ich pycache-Dateien in Git?

Wenn Sie mit Git arbeiten, ist es üblich, bestimmte Dateien oder Verzeichnisse zu ignorieren, die nicht versionskontrolliert werden müssen. Das Verzeichnis __pycache__ ist ein guter Kandidat dafür, da es kompilierten Bytecode enthält, der spezifisch für eine bestimmte Maschine ist und nicht zwischen verschiedenen Umgebungen geteilt werden muss.

Um __pycache__-Verzeichnisse in Git zu ignorieren, können Sie eine Zeile zu Ihrer .gitignore-Datei hinzufügen:

__pycache__/

Diese Zeile teilt Git mit, dass alle __pycache__-Verzeichnisse ignoriert werden sollen, egal wo sie sich in Ihrem Projekt befinden. Wenn Sie nun git status ausführen, sehen Sie, dass __pycache__-Verzeichnisse und ihre Inhalte nicht mehr als nicht verfolgte Dateien aufgelistet sind.

Was passiert, wenn ich das pycache-Verzeichnis lösche?

Das Löschen des __pycache__-Verzeichnisses beeinträchtigt die Ausführung Ihrer Python-Skripte nicht. Das __pycache__-Verzeichnis ist nicht notwendig, um Python-Skripte auszuführen; es hilft lediglich dabei, die Ausführung von zuvor ausgeführten Skripten zu beschleunigen.

Wenn Sie das __pycache__-Verzeichnis löschen und dann ein Python-Skript ausführen, wird Python das Skript in Bytecode neu kompilieren und das __pycache__-Verzeichnis sowie die entsprechende .pyc-Datei neu erstellen. Dieser Prozess kann die anfängliche Ausführung des Skripts leicht verlangsamen, aber nachfolgende Ausführungen werden schneller sein, da Python den im .pyc-Datei gespeicherten Bytecode verwenden kann.


Lassen Sie uns nun einige häufig gestellte Fragen zu __pycache__ in Python beantworten.

FAQ

  1. Was ist der Zweck des __pycache__-Verzeichnisses in Python?

Das __pycache__-Verzeichnis wird von Python erstellt, wenn Sie ein Skript ausführen. Es enthält .pyc-Dateien, die kompilierte Versionen Ihrer Python-Skripte sind. Diese Dateien befinden sich in einem Format namens Bytecode, das Python schneller als den ursprünglichen Quellcode ausführen kann.

  1. Kann ich das __pycache__-Verzeichnis löschen?

Ja, Sie können das __pycache__-Verzeichnis löschen. Das Löschen dieses Verzeichnisses beeinträchtigt die Ausführung Ihrer Python-Skripte nicht. Allerdings wird Python beim nächsten Ausführen Ihrer Skripte diese in Bytecode neu kompilieren müssen, was die anfängliche Ausführung leicht verlangsamen kann.

  1. Wie kann ich __pycache__-Dateien in Git ignorieren?

Um __pycache__-Verzeichnisse in Git zu ignorieren, können Sie die folgende Zeile zu Ihrer .gitignore-Datei hinzufügen: __pycache__/. Dadurch wird Git angewiesen, alle __pycache__-Verzeichnisse zu ignorieren, egal wo sie sich in Ihrem Projekt befinden.