- Permet de basculer facilement entre plusieurs versions de Python
- Suit la tradition UNIX des outils à but unique : simples, discrets et efficaces
- Ce projet est un fork de rbenv et ruby-build, adapté à Python
Ce que fait pyenv
- Permet de changer la version globale de Python au niveau utilisateur.
- Prend en charge des versions de Python par projet.
- Permet de surcharger la version de Python à l’aide de variables d’environnement.
- Peut rechercher plusieurs versions des commandes Python en une seule fois. Utile pour tester entre différentes versions de Python avec tox.
Ce que pyenv ne fait pas...
- Ne dépend pas de Python lui-même. pyenv est écrit en pur script shell.
- N’a pas besoin d’être chargé dans le shell. À la place, il utilise une approche par shim en ajoutant un répertoire au
PATH.
- Ne gère pas virtualenv. Bien sûr, l’utilisateur peut créer lui-même un virtualenv ou automatiser cela avec pyenv-virtualenv.
Fonctionnement
- pyenv intercepte les commandes Python via des exécutables shim injectés dans le
PATH, détermine la version de Python demandée par l’application, puis transmet la commande à cette installation Python.
Comprendre le PATH
- Quand vous exécutez une commande comme
python ou pip, le système d’exploitation cherche un exécutable portant ce nom dans la liste de répertoires définie par la variable d’environnement PATH.
Comprendre les shims
- pyenv insère le répertoire shims en tête du
PATH. Grâce au processus de rehashing, il maintient des shims pour toutes les commandes Python de toutes les versions de Python installées.
Comprendre la sélection de la version de Python
- Lorsqu’un shim est exécuté, pyenv lit et utilise la version de Python depuis les sources suivantes, dans cet ordre :
- La variable d’environnement
PYENV_VERSION (si elle est définie).
- Le fichier
.python-version propre à l’application dans le répertoire courant (s’il existe).
- Le premier fichier
.python-version trouvé en remontant les répertoires parents jusqu’à la racine du système de fichiers (s’il existe).
- Le fichier global
$(pyenv root)/version.
Trouver l’emplacement des installations Python fournies par pyenv
- pyenv transmet la commande vers l’installation Python correspondant à la version qu’il a déterminée.
- Chaque version de Python est installée dans son propre répertoire sous
$(pyenv root)/versions.
Utilisation
Installer des versions supplémentaires de Python
- Utilisez
pyenv install pour installer des versions supplémentaires de Python.
Résolution automatique vers la dernière version
- Toutes les sous-commandes de Pyenv, à l’exception de
uninstall, résolvent automatiquement un préfixe complet vers la dernière version.
Versions de Python avec prise en charge étendue
- Certaines versions de Python appliquent des correctifs fournis par les utilisateurs afin d’ajouter la prise en charge de certains environnements.
Basculer entre les versions de Python
- Pour utiliser une version de Python installée par Pyenv, exécutez l’une des commandes suivantes :
pyenv shell
pyenv local
pyenv global
Supprimer une version de Python
- Avec le temps, des versions de Python s’accumulent dans le répertoire
$(pyenv root)/versions.
- Pour supprimer une ancienne version de Python, utilisez
pyenv uninstall .
Autres tâches
- Pour afficher la liste de toutes les sous-commandes disponibles, exécutez
pyenv commands.
Suppression de pyenv
- Il est facile de désactiver temporairement Pyenv ou de le supprimer du système.
Plugins Pyenv
- Les plugins permettent d’étendre et de personnaliser les fonctionnalités de Pyenv de manière simple, flexible et maintenable.
Configuration avancée
- Des variables d’environnement permettent de contrôler le comportement de Pyenv.
Développement
- Le code source de Pyenv est hébergé sur GitHub.
- Les tests s’exécutent avec Bats.
Avis de GN⁺
- pyenv est un outil très utile pour gérer plusieurs versions de Python. Il est particulièrement pratique pour les développeurs qui doivent utiliser des versions différentes de Python selon les projets.
- Comme cet outil ne dépend pas de Python lui-même et repose sur de simples scripts shell, il peut être installé et administré même sur des systèmes où Python n’est pas installé.
- pyenv ne gère pas directement virtualenv, mais le plugin pyenv-virtualenv permet d’automatiser cette gestion, ce qui le rend pratique.
- Son installation et son utilisation sont relativement simples, ce qui le rend accessible même aux ingénieurs logiciel débutants ayant besoin de gérer des versions de Python.
- Parmi les autres outils offrant des fonctions similaires à pyenv, on trouve
conda, largement utilisé notamment en data science et en machine learning. Comme conda combine gestion des paquets et des environnements, il peut être recommandé aux utilisateurs qui ont besoin de ces fonctionnalités.
- Lors de l’adoption de pyenv, il faut faire attention à éviter les conflits de chemins si plusieurs versions de Python sont installées sur le système. L’avantage de pyenv est la simplicité de la gestion des versions, mais une mauvaise configuration peut perturber le chemin Python par défaut du système.
7 commentaires
Avec conda, il faut faire attention : dans les entreprises d’une certaine taille, la solution est payante.
Même si l’entreprise est petite, si le donneur d’ordre est de grande taille, cela devient délicat pour livrer.
conda lui-même est gratuit sous licence BSD, mais il faut bien vérifier les licences du dépôt et des paquets.
Je configure
asdfau niveau supérieur : https://asdf-vm.com/Et selon les projets, je le configure aussi en local, ou bien j’utilise des conteneurs...
Comme il y a désormais beaucoup de nouvelles solutions pour mettre en place et gérer des environnements, je ne l’utilise plus vraiment en ce moment... haha
C’est exactement comme ça que je l’utilise aussi.
Haha, personnellement, j’ai l’impression que pyenv est devenu un peu vieillissant.
Comme des choses comme rbenv, pyenv, nodenv continuaient d’apparaître, il a finalement aussi fallu créer anyenv. haha
https://github.com/anyenv/anyenv
Avis sur Hacker News
Avertissement sur l'utilisation de pyenv
La souffrance des programmeurs Python
Les outils pour garder les programmes Python stables
Présentation de l'outil Mise
Les avantages d'ASDF
Retour d'expérience sur l'utilisation de pyenv
python<version> -m venv /my/virtual/env.Stack personnelle de gestion Python
Gestion des dépendances d'exécution avec Mise
Partage d'un workflow macOS
J’ai l’impression que c’est vraiment là que ça devient très pénible.