uvx + GitHub Actions : cache les outils Python sans relancer PyPI
Pourquoi ça compte pour toi
Si tu utilises GitHub Actions pour exécuter des outils Python rapidement (linting, formatting, scripts), tu sais qu'à chaque exécution tu re-télécharges tout depuis PyPI. C'est lent, ça coûte de la bande passante, et c'est inutile. Une astuce simple te permet de mettre en cache les dépendances et de les réutiliser.
Ce qu'il faut retenir
- 1.Ajoute UV_EXCLUDE_NEWER=YYYY-MM-DD en variable d'env pour figer les versions au-delà d'une date
- 2.Intègre cette date dans la clé de cache GitHub Actions pour maîtriser les mises à jour
- 3.Les outils uvx se téléchargent une fois, puis sont servis depuis le cache : gain de temps et de bande passante
- 4.Tu peux forcer une mise à jour en changeant la date dans l'env
Tu galères avec le jargon ?
Lis la version réécrite en mode débutant — toutes les idées, sans le jargon.
Le problème : PyPI à chaque workflow
Quand tu utilises uvx outil-python dans une action GitHub, le workflow doit télécharger l'outil et ses dépendances depuis PyPI à chaque exécution. C'est inefficace : 30 secondes de téléchargement pour un outil qui ne change pas d'une semaine.
La solution : geler les versions avec une date
La recette est minimaliste :
- ▸
Définis une variable d'environnement au début du workflow :
env: UV_EXCLUDE_NEWER: "2026-07-12"Cela dit à
uv: « résous les versions comme si on était au 12 juillet, n'utilise rien de plus récent ». - ▸
Ajoute cette date dans ta clé de cache GitHub Actions :
- uses: actions/cache@v3 with: key: uvx-${{ env.UV_EXCLUDE_NEWER }}
Comment ça marche
Le premier run télécharge l'outil et le stocke. Les runs suivants trouvent la clé de cache identique et réutilisent ce qui est sauvegardé — aucune requête vers PyPI.
Quand tu veux mettre à jour tes outils, tu changes la date : UV_EXCLUDE_NEWER: "2026-07-20". GitHub détecte une nouvelle clé, télécharge les versions publiées après le 20 juillet, et met à jour le cache.
Pourquoi c'est élégant
Tu contrôles précisément quand tes outils se mettent à jour. Plus de « je me suis réveillé et ma build casse parce qu'une dépendance s'est mise à jour ». Et tu gagnes en vitesse : tes workflows respirent.
Et concrètement pour toi ?
Choisis ton profil — la lecture de l'article change selon qui tu es.
Pour toi, c'est un exemple concret de comment la technique évite du gaspillage : au lieu de retélécharger les mêmes outils à chaque fois, on les garde en mémoire. C'est du bon sens appliqué à l'informatique.
Essayer maintenant
Consulter le tuto complet de Simon Willison →Source
Pour aller plus loin
Cet article t'a donné envie d'approfondir ? Deux formations Noésis t'attendent :
Explorer les thèmes de cet article :