Plusieurs versions de python avec Pyenv
Je pense que vous devez parfois contribuer à des projets python prenant en charge plusieurs versions de Python.
Vous voulez tester votre développement avec la dernière version de python et ce, sans détruire votre environnement de dev !
Alors comment installer facilement toutes les versions de python dont vous avez besoin ?
pyenv est l’outil qui va vous permettre de gérer plusieurs versions de python sur la même machine Linux. Je l’ai intégré à mon environnement de dev. Vous verrez à la fin du billet qu’on peut l’utiliser pour installer plusieurs versions d’Ansible.
Installer pyenv
Avant d’installer pyenv, il est nécessaire d’installer des dépendances. Ces dépendances sont nécessaires, car pyenv compile la version Python cible à partir des sources.
Installation des dépendances
Sur Ubuntu / Debian
Sur Fedora / CentOS / RHEL
sur Alpine
C’est surtout pour l’installer dans vos containers.
Pour les autres environnements
Je vous renvoie à la documentation officielle
Installation
Le plus simple pour installer pyenv est d’utiliser le projet pyenv-installer. C’est un script en ligne.
Une fois terminé il suffira d’ajouter ces lignes à votre fichier .bashrc
ou
.zshrc
.
Utilisation de pyenv
Maintenant que pyenv est installé, vous pouvez installer plusieurs versions de python sur votre machine Linux.
Lister les versions disponibles
Pour obtenir la liste des versions 3 de Cpython disponibles :
Il est aussi possible d’installer des versions de :
- Anaconda
- ActivePython
- GraalPython
- IronPython
- Jython
- MicroPython
- MiniConda
- PyPy
- Pyston
- stackless
Installer / Desinstaller une version de python
Pyenv permet d’installer de desinstaller les versions de python avec les
commandes install
et uninstall
. L’installation prend du temps puisqu’il
compile la version demandée.
Lister les versions de python disponibles
Utiliser en local une version de python
Dans un répertoire spécifique il est possible d’utiliser une version de python. Ça se fait au moyen de la commande local :
Pour identifier la version locale :
Gestion des environnements virtuels python avec pyenv
Pyenv permet de gérer également les environnements virtuels de python. Pour rappel ça permet de cloisonner les différents environnements de développements.
Par exemple installons deux environnements utilisant deux versions de python différentes :
Ces environnements sont créés dans le répertoire ~/.pyenv/versions
donc attention
à bien leur donner des noms différents. nom-du-projet_version par exemple.
Pour lister les environnements virtuels, c’est la commande virtualenvs
avec un
s
:
Pour activer un environnement :
Pour le désactiver :
Pour le détruire:
Ansible et pyenv
Vous avez développé vos propres filtres, modules Ansible et bien pyenv va vous permettre de valider que ceux-ci fonctionnent avec les différentes versions d’Ansible combiné aux différentes versions de python.
Il suffira de créer différents environnements virtuels combinant toutes les versions possibles :
- ansible27-python27
- ansible29-python39 …
Utilisation conjointe avec pipenv
pipenv permet de gérer les dépendances d’un projet python avec la même
souplesse que celle que l’on connait avec npm
via le fichier Pipfile
:
Installation de pipenv
Il suffit de l’installer avec pip
:
Pipenv et pyenv
Si vous avez activez un environnement virtuel et si vous lancez la commande
pipenv install
, pipenv va détecter qu’il est déjà dans un environnement
virtuel et ainsi ne va pas en créer un.
pipenv permet de gérer plusieurs sources. Par exemple pour ajouter votre
propre serveur pypi
tournant sous nexus
:
Conclusion
Ces deux outils apportent toute la souplesse que l’on attend pour pouvoir développer sereinement des projets python, mais aussi devops.