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 :
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.
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/
# 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
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.
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`