J'en parlerai plus en détail dans la deuxième dépêche ☺
En soi, il n'y a rien de très compliqué avec les environnements virtuels. Leur raison d'être essentielle, c'est de pouvoir utiliser et/ou développer le projet foo et le projet bar avec les dépendances des deux installées, sans qu'elles rentrent en conflit entre elles, ni d'ailleurs en conflit avec des outils écrits en Python de ta distribution Linux.
Et pour les utiliser, il y a juste quelques commandes à mémoriser :
# Crée un environnement dans <dossier-environnement>
python -m venv <dossier-environnement>
# Lance le Python de l'environnement, qui est isolé (il n'a pas# accès aux paquets installés système, seulement à la bibliothèque standard)
<dossier-environnement>/bin/python
# Installe des paquets dans l'environnement
<dossier-environnement>/bin/pip install numpy scipy pycowsay
# Lance une commande installée dans l'environnement par pip
<dossier-environnement>/bin/pycowsay meuh
# "Active" l'environnement en ajoutant son dossier bin/ au début du $PATH# du shell.source <dossier-environnement>/bin/activate
# Quand l'environnement est activé, on peut travailler plus agréablement :
python # équivalent à <dossier-environnement>/bin/python
pip # équivalent à <dossier-environnement>/bin/pip
pycowsay # équivalent à <dossier-environnement>/bin/pycowsay# Désactive l'environnement
deactivate
# Supprime l'environnement
rm -rf <dossier-environnement>
Là où ça se complique, ce sont les plutôt « bonnes pratiques » avec les environnements, parce qu'elles ne sont pas vraiment standardisées. Il y a beaucoup d'outils qui gèrent des environnements à ta place (pipx, tox, nox, hatch, poetry, pour n'en citer que quelques uns).
Exemple de confusion : les gens entendent qu'il ne faut pas installer un paquet en dehors d'un environnement virtuel (c'est vrai), ils voient que pycowsay s'installe avec pipx install pycowsay (c'est correct), et ils en déduisent qu'il faut faire ça dans un environnement virtuel (c'est faux, parce que justement, l'intérêt de pipx par rapport à pip, c'est qu'il crée l'environnement tout seul).
Un autre problème pour les débutants, c'est qu'il faut déjà savoir comment invoquer Python : avec python ou python3 sous Linux (sachant que jusqu'à récemment, python pouvait être Python 2), et avec py sous Windows. Et sous macOS, c'est encore pire vu qu'il y a un Python système, mais aussi pour beaucoup un Python de Homebrew. Même chose avec le source <dossier-environnement>/bin/activate, qui dépend du shell (cette commande marche sous Bash et zsh, pour Powershell ce serait <dossier>\Scripts\Activate.ps1).
Autre source de confusion : la manière d'installer venv. Sous macOS et Windows, il vient préinstallé, mais certaines distributions Linux ne le mettent pas dans le paquet python pour réduire sa taille. Par exemple, sous Ubuntu, il faut faire sudo apt install python3-venv. Sans compter que certains préfèrent utiliser le module virtualenv au lieu de venv.
Bref, comme pour beaucoup de choses dans toute cette affaire, il n'y a vraiment rien de compliqué, mais les gens n'y comprennent rien parce que c'est vraiment difficile de donner des instructions qui marchent pour tout le monde sur tous les systèmes et avec tous les outils.
[^] # Re: merci et venv
Posté par jeanas (site web personnel, Mastodon) . En réponse à la dépêche L’installation et la distribution de paquets Python (1/4). Évalué à 8. Dernière modification le 06 novembre 2023 à 20:37.
J'en parlerai plus en détail dans la deuxième dépêche ☺
En soi, il n'y a rien de très compliqué avec les environnements virtuels. Leur raison d'être essentielle, c'est de pouvoir utiliser et/ou développer le projet foo et le projet bar avec les dépendances des deux installées, sans qu'elles rentrent en conflit entre elles, ni d'ailleurs en conflit avec des outils écrits en Python de ta distribution Linux.
Et pour les utiliser, il y a juste quelques commandes à mémoriser :
Là où ça se complique, ce sont les plutôt « bonnes pratiques » avec les environnements, parce qu'elles ne sont pas vraiment standardisées. Il y a beaucoup d'outils qui gèrent des environnements à ta place (pipx, tox, nox, hatch, poetry, pour n'en citer que quelques uns).
Exemple de confusion : les gens entendent qu'il ne faut pas installer un paquet en dehors d'un environnement virtuel (c'est vrai), ils voient que
pycowsays'installe avecpipx install pycowsay(c'est correct), et ils en déduisent qu'il faut faire ça dans un environnement virtuel (c'est faux, parce que justement, l'intérêt de pipx par rapport à pip, c'est qu'il crée l'environnement tout seul).Un autre problème pour les débutants, c'est qu'il faut déjà savoir comment invoquer Python : avec
pythonoupython3sous Linux (sachant que jusqu'à récemment,pythonpouvait être Python 2), et avecpysous Windows. Et sous macOS, c'est encore pire vu qu'il y a un Python système, mais aussi pour beaucoup un Python de Homebrew. Même chose avec lesource <dossier-environnement>/bin/activate, qui dépend du shell (cette commande marche sous Bash et zsh, pour Powershell ce serait<dossier>\Scripts\Activate.ps1).Autre source de confusion : la manière d'installer
venv. Sous macOS et Windows, il vient préinstallé, mais certaines distributions Linux ne le mettent pas dans le paquetpythonpour réduire sa taille. Par exemple, sous Ubuntu, il faut fairesudo apt install python3-venv. Sans compter que certains préfèrent utiliser le modulevirtualenvau lieu devenv.Bref, comme pour beaucoup de choses dans toute cette affaire, il n'y a vraiment rien de compliqué, mais les gens n'y comprennent rien parce que c'est vraiment difficile de donner des instructions qui marchent pour tout le monde sur tous les systèmes et avec tous les outils.