Outils pour utilisateurs

Outils du site


pyenv

PYENV

Les environnements virtuels sont pratiques pour isoler un applicatif et ses dépendances d'un autre applicatif ou du système hôte, néanmoins `venv` est un module de python, et donc l'environnement installé sera lié à la version de python du système.
Cela peut poser plusieurs problèmes :

  • Sur un système particulièrement stable (comme centos), on sera bloqué à une version de python probablement obsolète
  • Sur un système plus vivant (comme archlinux), la version de python risque d'évoluer “rapidement” et notre belle appli en python 3.9 n'est plus fonctionnelle car les modules du virtualenv installés pour python 3.9 ne sont plus compatibles avec la version de python du système (ex: 3.11)

C'est l'un des avantages de conda, avoir une sorte de package manager qui permet d'installer des environnements virtuels de python comme des distributions (linux), avec n'importe quelle version de python, et même de gérer les maj au sein de ces environnements virtuels.
Cependant, à l'usage on remarque que conda prend beaucoup de place.

`pyenv` est une solution alternative, très dans l'esprit unix (ne vise qu'une unique fonctionnalité), et qui permet la cohabitation de plusieurs versions de python sur sa machine, et ce sans perturber la version de python du système.

Installer et configure ''pyenv''

Archlinux propose un paquet tout fait, installation via pacman :

pacman -S pyenv

pyenv va télécharger les sources de python et les compiler, il faut donc également installer les libs pour permettre la bonne compilation :

pacman -S --needed base-devel openssl zlib xz tk

Il faut ensuite configurer pyenv, et notamment son shell, ça se passe dans `.bashrc`

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

En gros, les versions de python seront installés et accessibles depuis son home : ~/.pyenv/

Utiliser pyenv au quotidien dans un SHELL

# Installer une version spécifique de python
pyenv install 3.11
pyenv install 3.11.5
 
# Voir les versions installées
pyenv versions
 
# Voir toutes les versions possibles
pyenv install --list   # grep " 3\.[678]" pour filtrer sur les version 3.6 3.7 ou 3.8; grep "jython"
# note : d'autres interpréteurs que CPython sont disponibles : Ipython, hython, miniconda...
 
# Activer une version pour cette session shell
# similaire à un "conda activate <my_env>"
pyenv shell 3.8
 
# Activer une version par défaut à l'avenir
pyenv global 3.11.6
# note : utiliser la version "system" reset la sélection à la version fournie par l'os
 
# Activer une version pour le dossier actuel
pyenv local 3.12
# note: crée un fichier .python-version dans ce dossier qui précisera à pyenv quelle version utiliser dans ce dossier
 
# Connaître la version actuellement en cours d'utilisation
pyenv version
 
# Supprimer une version de python
pyenv uninstall 3.5.8

Pyenv avec un virtualenv

Dans un shell

Il convient d'abord d'activer la version de python qui nous convient (voir paragraphe précédent), puis d'utiliser `venv` comme décrit dans la page sur les virtualenv.
Par exemple pour un déploiement en prod (même si certains aiment les outils à la hype plus élevée comme poetry, mais j'aime les choses simples, sans avoir besoin d'installer des tas de choses.

On peut aussi utiliser un plugin de pyenv, pyenv-virtualenv, mais je n'ai pas approfondi le sujet.

Dans pycharm

Pycharm permet d'utiliser plusieurs outils pour créer, utiliser des environnements virtuels, à ce jour (6/11/2023) : `virtualenv` (packagé de base avec pycharm), `conda`, `pipenv`, `poetry`.
On notera que `venv` n'est pas disponible, on utilisera `virtualenv` qui est un cousin proche.

Dans la fenêtre virtualenv, on peut sélectionner l'executable python (“Base interpreter”). Il suffit d'aller chercher dans le dossier `~.pyenv/versions/3.12.0/bin/python3`

pyenv.txt · Dernière modification : 2024/08/18 13:41 de luc