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 nommé __pycache__ apparaître dans votre projet. Il peut sembler insignifiant, mais il joue un rôle essentiel dans la façon dont Python exécute vos programmes efficacement. Dans ce guide, nous allons expliquer ce qu’est le dossier __pycache__, pourquoi Python le génère, et comment vous pouvez le gérer ou le supprimer en toute sécurité.

Python est un langage interprété, mais il ne ré‑interprète pas chaque fichier .py à partir de zéro à chaque exécution. À la place, Python compile votre code source en bytecode — une représentation légère et de bas niveau qui peut être exécutée plus rapidement. Ces fichiers de bytecode compilé (avec l’extension .pyc) sont stockés dans le dossier __pycache__.

Vous voulez créer rapidement de la Data Visualization à partir d’un DataFrame pandas en Python sans écrire de code ?

PyGWalker est une bibliothèque Python pour l’Exploratory Data Analysis avec Visualisation.
PyGWalker (opens in a new tab) transforme votre dataframe pandas ou polars en une interface type Tableau directement dans Jupyter Notebook.

PyGWalker for Data visualization (opens in a new tab)


Qu’est-ce que pycache en Python ?

Le dossier __pycache__ est créé automatiquement lorsque Python exécute un module. À l’intérieur, Python stocke les fichiers .pyc — une version compilée en bytecode de votre fichier .py.

Le bytecode est conçu pour une exécution plus rapide. Lorsque vous lancez un script, Python cherche un fichier .pyc à jour :

  • S’il existe et correspond au code source actuel → Python charge immédiatement le fichier .pyc.
  • Sinon → Python recompile le code source, génère un nouveau fichier .pyc et le stocke dans __pycache__.

Pourquoi les noms de fichiers ressemblent à module.cpython-310.pyc

Les versions modernes de Python incluent un tag d’interpréteur (par exemple cpython-311) afin que plusieurs versions de Python puissent coexister sans conflit.

C’est particulièrement important lorsque vous utilisez :

  • Des environnements virtuels
  • Un Python système + un Python spécifique à un environnement
  • Des outils comme pyenv, conda ou des images Docker

Où se trouve le dossier pycache ?

Le dossier __pycache__ apparaît dans le même répertoire que le module Python exécuté.

Exemple de structure :


my_project/
main.py
utils.py
**pycache**/
main.cpython-311.pyc
utils.cpython-311.pyc

Si vous importez un module depuis un autre répertoire, ce répertoire générera également son propre __pycache__.

Dans les environnements virtuels

Les environnements virtuels contiennent souvent de nombreux dossiers __pycache__ à l’intérieur des paquets installés. C’est normal — l’import de paquets génère des fichiers .pyc lors de leur première utilisation.


Comment pycache accélère‑t‑il les scripts Python ?

L’exécution normale d’un script Python nécessite :

  1. Analyse du texte (parsing)
  2. Construction de l’Abstract Syntax Tree (AST)
  3. Compilation de l’AST en bytecode
  4. Exécution du bytecode

Les étapes 1 à 3 sont sautées lorsque Python trouve un fichier .pyc à jour. C’est pourquoi :

  • La première exécution peut être légèrement plus lente
  • Les exécutions suivantes sont plus rapides (surtout dans de grandes bases de code)

Fichiers pyc basés sur un hash (PEP 552)

Les versions modernes de Python prennent en charge :

  • Les fichiers .pyc basés sur un timestamp (par défaut)
  • Les fichiers .pyc basés sur un hash (pour des builds reproductibles, le packaging, les images Docker)

Cela rend la génération de bytecode plus stable dans les environnements automatisés ou conteneurisés.


Puis‑je supprimer le dossier pycache ?

Oui — supprimer __pycache__ est sans danger.

Python le recréera automatiquement la prochaine fois que vous exécuterez vos scripts. Le seul inconvénient : votre prochaine exécution pourra être légèrement plus lente à cause de la recompilation.

Pour supprimer récursivement tous les dossiers __pycache__ :

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

Cas d’usage courants pour supprimer pycache

  • Déboguer des problèmes d’import
  • Après avoir renommé / déplacé des modules
  • Lors du packaging pour un déploiement
  • Pour réduire le bruit avant un commit Git ou une build Docker

Comment désactiver la création des fichiers pycache ?

Vous pouvez désactiver la création de fichiers .pyc en définissant la variable d’environnement :

export PYTHONDONTWRITEBYTECODE=1

Lorsque cette variable est activée :

  • Python ne génère plus de fichiers .pyc
  • Les dossiers __pycache__ ne sont pas créés

Cette option est couramment utilisée dans :

  • Les images Docker (pour réduire la taille des layers)
  • Les pipelines CI
  • Les petits scripts où la performance est négligeable

Pour rendre ce paramètre permanent, ajoutez la variable à la configuration de votre shell (par exemple ~/.bashrc).


Comment ignorer les fichiers pycache dans Git

Comme les fichiers .pyc sont spécifiques à une machine et générés automatiquement, ils ne doivent pas être stockés dans le système de contrôle de version.

Ajoutez ceci à votre .gitignore :

__pycache__/
*.pyc

La règle *.pyc est optionnelle mais utile lorsque des versions plus anciennes de Python placent les .pyc à côté des .py.


Que se passe‑t‑il si je supprime le dossier pycache ?

Rien ne casse. Votre script s’exécute normalement.

Python va simplement :

  1. Détecter l’absence de fichier .pyc
  2. Recompiler le fichier .py
  3. Recréer le répertoire __pycache__ et le fichier .pyc

Seule la première exécution après la suppression est légèrement plus lente.


FAQ

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

Ce dossier stocke les fichiers .pyc compilés en bytecode, ce qui permet à Python de démarrer plus rapidement lors des exécutions suivantes.

2. Puis‑je supprimer le dossier __pycache__ ?

Oui. Le supprimer est sans danger. Python le régénère automatiquement.

3. Comment puis‑je ignorer les fichiers __pycache__ dans Git ?

Ajoutez ceci à votre .gitignore :

__pycache__/
*.pyc