__pycache__
est un dossier contenant le bytecode Python 3 compilé et prêt à être exécuté.
Je ne recommande pas de supprimer laborieusement ces fichiers de manière routinière ou de supprimer leur création pendant le développement car cela gaspille votre temps. Ayez simplement une commande récursive prête (voir ci-dessous) pour nettoyer lorsque nécessaire car le bytecode peut devenir obsolète dans des cas particuliers (voir commentaires).
Les programmeurs Python ignorent généralement le bytecode. En effet, __pycache__
et *.pyc
sont des lignes courantes à voir dans les fichiers .gitignore
. Le bytecode n'est pas destiné à être distribué et peut être désassemblé en utilisant le dis
module.
Si vous utilisez OS X, vous pouvez facilement masquer tous ces dossiers dans votre projet en exécutant la commande suivante à partir du dossier racine de votre projet.
find . -name '__pycache__' -exec chflags hidden {} \;
Remplacez __pycache__
par *.pyc
pour Python 2.
Cela définit un indicateur sur tous ces répertoires (fichiers .pyc) indiquant à Finder/Textmate 2 de les exclure des listes. Il est important de noter que le bytecode est toujours présent, il est simplement masqué.
Réexécutez la commande si vous créez de nouveaux modules et souhaitez masquer le nouveau bytecode ou si vous supprimez les fichiers de bytecode masqués.
Sur Windows, la commande équivalente pourrait être (non testée, script batch bienvenu) :
dir * /s/b | findstr __pycache__ | attrib +h +s +r
C'est la même chose que de parcourir le projet en masquant les dossiers en utilisant clic droit > masquer...
L'exécution de tests unitaires est un scénario (plus de détails dans les commentaires) où supprimer les fichiers *.pyc
et les dossiers __pycache__
est en effet utile. J'utilise les lignes suivantes dans mon ~/.bash_profile
et j'exécute simplement cl
pour le nettoyage lorsque nécessaire.
alias cpy='find . -name "__pycache__" -delete'
alias cpc='find . -name "*.pyc" -delete'
...
alias cl='cpy && cpc && ...'
et plus récemment
# pip install pyclean
pyclean .
54 votes
"Est-ce ce que nous donnons aux gens au lieu de notre code source?" - Non, vous leur donnez le code source dans un joli package installable pour faciliter son utilisation.
174 votes
Personne n'en a encore parlé, mais votre définition de cache est bizarre. Le cache est tout simplement un composant qui stocke des données pour que les futures demandes de ces données puissent être servies plus rapidement.
10 votes
Voir : python.org/dev/peps/pep-3147
7 votes
Depuis
Python 3.8
, vous pouvez utiliser une variable d'environnement pour changer l'emplacement des répertoires de cache ennuyeux : stackoverflow.com/a/57414308/16123187 votes
Un cache est quelque chose qui garde une copie des éléments au cas où vous en auriez besoin à nouveau, pour vous éviter de devoir retourner à l'original pour l'obtenir. Il est conçu pour être plus rapide que de se rendre à l'endroit d'origine. Cela pourrait être plus rapide car il n'a pas besoin de prétraiter ou de compiler les informations. Ou cela pourrait être un stockage plus rapide, par exemple un cache disque en RAM ou un cache web sur un disque local. Ce n'est pas par nature chiffré (bien que cela puisse parfois l'être), et ce n'est pas toujours un "fichier de fichiers similaires" - cela peut être un fichier, un groupe de fichiers, un bloc de RAM, etc.
3 votes
Placer le terme de recherche
PYTHONPYCACHEPREFIX
ici - voir le commentaire de @Rotareti pour plus d'informations.