Skip to content

Comprendre pycache en Python : Tout ce que vous devez savoir

Updated on

Si vous avez déjà exécuté un script Python, vous avez peut-être remarqué un dossier particulier qui se crée dans le répertoire de votre projet. Ce dossier, nommé __pycache__, peut sembler mystérieux au premier abord, mais il joue un rôle crucial dans la façon dont Python exécute vos scripts. Cet article démystifiera le dossier __pycache__, en expliquant son objectif, son fonctionnement et comment vous pouvez le gérer efficacement dans vos projets Python.

Python est un langage interprété, ce qui signifie qu'il convertit votre code source en un format compréhensible et exécutable par votre ordinateur. Ce processus de conversion peut prendre du temps, en particulier pour les scripts plus importants. Pour accélérer ce processus, Python enregistre le code converti dans un dossier __pycache__ sous la forme de fichiers .pyc. Ces fichiers sont une forme de bytecode que Python peut exécuter beaucoup plus rapidement que le code source original.

Vous souhaitez créer rapidement des visualisations de données à partir d'un DataFrame Python Pandas sans écrire de code ?

PyGWalker est une bibliothèque Python dédiée à l'analyse exploratoire de données avec la visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation de données dans Jupyter Notebook en transformant votre DataFrame Pandas (et DataFrame Polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Qu'est-ce que pycache en Python ?

Le dossier __pycache__ est un répertoire que Python crée dans votre projet lorsque vous exécutez un script. Ce dossier contient des fichiers .pyc, qui sont des versions compilées de vos scripts Python. Ces fichiers sont au format bytecode, qui est un ensemble d'instructions de bas niveau pouvant être exécutées par un interpréteur Python.

Lorsque vous exécutez un script Python, l'interpréteur vérifie d'abord s'il existe un fichier .pyc correspondant dans le dossier __pycache__. S'il en existe un, et que le fichier .pyc est à jour, Python exécutera ce fichier plutôt que le script original. Cela est dû au fait que l'exécution du bytecode est beaucoup plus rapide que l'interprétation du code source.

Cependant, si le fichier .pyc est obsolète (c'est-à-dire que le script source a été modifié depuis la création du fichier .pyc), ou s'il n'y a pas de fichier .pyc du tout, Python recompilera le script et mettra à jour ou créera le fichier .pyc dans le dossier __pycache__.

Où se trouve le dossier pycache ?

Le dossier __pycache__ se trouve dans le même répertoire que le script Python qui est en cours d'exécution. Par exemple, si vous avez un script nommé main.py dans un répertoire nommé mon_projet, l'exécution de main.py créera un dossier __pycache__ dans le répertoire mon_projet.

À l'intérieur du dossier __pycache__, vous trouverez des fichiers .pyc correspondant à chaque script Python qui a été exécuté dans le répertoire parent. Les noms de ces fichiers correspondent aux noms des scripts d'origine, mais avec une extension .pyc au lieu de .py.

Comment pycache accélère-t-il l'exécution des scripts Python ?

Le dossier __pycache__ et ses fichiers .pyc contribuent à accélérer l'exécution des scripts Python en stockant du bytecode, qui est une version pré-compilée de votre script. Le bytecode est plus rapide à exécuter pour Python que le code source original, car il s'agit d'un format de bas niveau plus proche du code machine.

Lorsque vous exécutez un script Python, l'interpréteur doit analyser le code source, le convertir en un arbre de syntaxe abstraite (AST), puis compiler cet AST en bytecode. Ce processus peut prendre du temps, en particulier pour les scripts plus importants.

Puis-je supprimer le dossier pycache ?

Oui, vous pouvez supprimer le dossier __pycache__. La suppression de ce dossier n'affectera pas l'exécution de vos scripts Python. Cependant, la prochaine fois que vous exécuterez vos scripts, Python devra les recompiler en bytecode, ce qui peut ralentir légèrement l'exécution initiale. Cela est dû au fait que Python devra recréer le dossier __pycache__ et les fichiers .pyc qu'il contient.

Si vous vous inquiétez de l'encombrement du dossier __pycache__ dans votre répertoire de projet, vous pouvez utiliser une commande simple pour supprimer tous les dossiers __pycache__ de manière récursive. Voici comment procéder :

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

Cette commande trouvera tous les répertoires portant le nom __pycache__ dans le répertoire actuel et ses sous-répertoires, puis les supprimera.

Comment désactiver la création de fichiers pycache en Python ?

Bien que le dossier __pycache__ et ses fichiers .pyc puissent contribuer à accélérer l'exécution de vos scripts Python, il peut y avoir des situations où vous souhaitez désactiver leur création. Par exemple, vous pouvez travailler sur un petit script dont le temps de compilation est négligeable, ou vous pouvez vouloir éviter d'encombrer votre répertoire de projet avec des dossiers __pycache__.

Vous pouvez désactiver la création de dossiers __pycache__ et de fichiers .pyc en définissant la variable d'environnement PYTHONDONTWRITEBYTECODE. Vous pouvez le faire directement dans votre terminal avec la commande suivante :

export PYTHONDONTWRITEBYTECODE=1

Après avoir exécuté cette commande, Python ne créera plus de dossiers __pycache__ ni de fichiers .pyc jusqu'à la fin de votre session de terminal actuelle. Si vous souhaitez rendre ce changement permanent, vous pouvez ajouter la ligne ci-dessus à votre fichier de démarrage de shell (par exemple, ~/.bashrc ou ~/.bash_profile pour le shell Bash).

Comment ignorer les fichiers pycache dans Git

Lorsque vous travaillez avec Git, il est courant d'ignorer certains fichiers ou répertoires qui n'ont pas besoin d'être versionnés. Le répertoire __pycache__ est un candidat idéal pour cela, car il contient un bytecode compilé spécifique à la machine et n'a pas besoin d'être partagé entre différents environnements.

Pour ignorer les répertoires __pycache__ dans Git, vous pouvez ajouter une ligne à votre fichier .gitignore :

__pycache__/

Cette ligne indique à Git d'ignorer tous les répertoires __pycache__, peu importe leur emplacement dans votre projet. Maintenant, lorsque vous exécutez git status, vous verrez que les répertoires __pycache__ et leur contenu ne sont plus répertoriés comme des fichiers non suivis.

Que se passe-t-il si je supprime le dossier __pycache__ ?

La suppression du dossier __pycache__ n'affectera pas l'exécution de vos scripts Python. Le dossier __pycache__ n'est pas nécessaire pour exécuter des scripts Python ; il aide simplement à accélérer l'exécution des scripts qui ont été exécutés précédemment.

Lorsque vous supprimez le dossier __pycache__ puis exécutez un script Python, Python recompilera le script en bytecode et recréera le dossier __pycache__ et le fichier .pyc correspondant. Ce processus peut ralentir légèrement l'exécution initiale du script, mais les exécutions ultérieures seront plus rapides, car Python peut utiliser le bytecode stocké dans le fichier .pyc.


Maintenant, répondons à quelques questions fréquemment posées sur __pycache__ en Python.

FAQ

  1. Quel est le but du dossier __pycache__ en Python ?

Le dossier __pycache__ est créé par Python lorsque vous exécutez un script. Il contient des fichiers .pyc, qui sont des versions compilées de vos scripts Python. Ces fichiers sont dans un format appelé bytecode, que Python peut exécuter plus rapidement que le code source d'origine.

  1. Puis-je supprimer le dossier __pycache__ ?

Oui, vous pouvez supprimer le dossier __pycache__. La suppression de ce dossier n'affectera pas l'exécution de vos scripts Python. Cependant, la prochaine fois que vous exécutez vos scripts, Python devra les recompiler en bytecode, ce qui peut ralentir légèrement l'exécution initiale.

  1. Comment puis-je ignorer les fichiers __pycache__ dans Git ?

Pour ignorer les répertoires __pycache__ dans Git, vous pouvez ajouter la ligne suivante à votre fichier .gitignore : __pycache__/. Cela indique à Git d'ignorer tous les répertoires __pycache__, peu importe leur emplacement dans votre projet.