Python

Environnements virtuels en Python 3

Environnements virtuels en Python 3
Comme la plupart des gens, je déteste installer des packages inutiles sur mon poste de travail. Une fois que vous en avez terminé avec eux, les désinstaller n'est jamais suffisant. Les colis laissent derrière eux des tonnes de dossiers et de fichiers. Ils nécessitent de nombreux autres paquets (obscurs) également laissés pour compte dans le sillage des choses. Lentement mais sûrement, ces éléments s'accumulent dans votre poste de travail et, bien qu'ils n'occupent pas une partie importante de votre espace disque, ils peuvent causer d'autres problèmes.

Dépendances plus anciennes

Des packages plus anciens peuvent persister et votre code Python les utilisera avec plaisir. Ce n'est pas un problème si vos scripts Python sont destinés à s'exécuter localement et non à des fins industrielles. Les scientifiques des données, les étudiants et même les personnes ordinaires qui automatisent leurs tâches quotidiennes peuvent simplement continuer à utiliser les anciens packages sans trop de problème.

Le problème commence lorsque vous envoyez votre code en production. Lorsque vous faites cela, il y a de fortes chances que vous envoyiez simplement votre script principal et non toutes les dépendances du package. Par exemple, si vous avez écrit un microservice à expédier en tant que fonction AWS Lambda, les premières lignes peuvent importer un module de demande comme celui-ci :

demande d'importation

Le package de demande fourni par AWS lambda sera différent de votre ancien et, par conséquent, le programme peut planter.

Conflits

Des conflits peuvent également survenir lorsque différents projets utilisent différentes versions du même package. Peut-être que certains de vos anciens projets ont besoin des anciens packages pip. Mais vous pourriez avoir besoin du nouveau package pour d'autres projets. Exécution de pip install -U mettra à niveau le package sur votre système d'exploitation, ce qui causera des problèmes lorsque vous reviendrez à la maintenance de vos anciens projets.

Environnements virtuels Python

Si vous utilisez une version de Python supérieure à 3.5, vous pouvez utiliser un module intégré appelé venv pour créer ce qu'on appelle des environnements virtuels Python. Ce que fait ce module est de créer un dossier ou un répertoire isolé où tous vos packages pip et autres dépendances peuvent vivre. Le dossier contient également un script « activate ». Chaque fois que vous souhaitez utiliser un environnement virtuel particulier, vous exécutez simplement ce script, après quoi seuls les packages contenus dans ce dossier sont accessibles. Si vous exécutez pip install, les packages seront installés dans ce dossier et nulle part ailleurs. Une fois que vous avez fini d'utiliser un environnement, vous pouvez simplement le "désactiver" et seuls les packages pip globaux seront disponibles pour vous.

Si vous utilisez Ubuntu 18.04 et versions ultérieures, vous n'avez même pas besoin d'installer le gestionnaire de packages pip sur l'ensemble de votre système. Pip ne peut exister dans votre environnement virtuel que si vous le préférez ainsi.

Installation de venv et création d'environnements virtuels

Ubuntu 18.04 LTS sort de la boîte avec Python 3.6.x, mais le module Python venv n'est pas installé, pas plus que pip. Installons juste venv.

$ apt installer python3-venv

Ensuite, nous allons dans le répertoire dans lequel vous souhaitez que votre répertoire d'environnement virtuel soit créé. Pour moi c'est ~/project1

$ cd ~/projet1

Créez votre venv avec la commande suivante, notez que my-env n'est que le nom de cet environnement, vous pouvez le nommer comme vous voulez :

$ python3 -m venv mon-env

Remarque : Certaines installations Python3, comme celles disponibles sur Windows, vous appellent l'interpréteur Python en utilisant uniquement python et non python3, mais cela change d'un système à l'autre. Par souci de cohérence, je n'utiliserai que python3.

Une fois l'exécution de la commande terminée, vous remarquerez un nouveau dossier ~/project1/my-evn. Pour activer l'environnement virtuel my-env, vous devrez :

  1. Cours,
    $source ~/project1/my-env/bin/activate si vous utilisez Bash.
    Il existe des scripts alternatifs appelés activate.pêcher et activer.csh pour les personnes qui utilisent respectivement du poisson et des coquillages.
  2. Sous Windows, le script peut être invoqué en exécutant :
    >.\my-env\Scripts\activate.chauve souris si vous utilisez l'invite de commande, ou,
    >.\my-env\Scripts\activate.ps1 si vous utilisez PowerShell.

Utilisation d'environnements virtuels

Une fois que vous avez exécuté le script avec succès, vous remarquerez que l'invite se transforme en quelque chose comme ce qui est montré ci-dessous, vous pouvez maintenant installer des packages à l'aide de pip :

(my-env) $ demandes d'installation pip3
## Nous pouvons lister les packages installés à l'aide de la commande 'pipfreeze'
(mon-env) $ pip3 geler
certificat==2018.dix.15
charret==3.0.4
idna==2.7
pkg-ressources==0.0.0
demandes==2.20.1
urllib3==1.24.1

Tant que l'environnement virtuel est actif (comme indiqué par l'invite), tous les packages seront enregistrés uniquement dans le répertoire de l'environnement virtuel (my-env), peu importe où vous vous trouvez dans le système de fichiers.

Pour sortir de l'environnement virtuel, vous pouvez taper deactivate dans l'invite et vous reviendrez à l'installation de Python à l'échelle du système. Vous pouvez remarquer que les nouveaux packages que nous venons d'installer ne seront pas affichés dans l'installation globale de pip.

Pour se débarrasser de l'environnement virtuel, supprimez simplement le dossier my-env qui a été créé après avoir exécuté le module. Vous pouvez créer autant de ces environnements que vous le souhaitez.

Conclusion

Avec le module venv, les environnements virtuels sont désormais disponibles en tant que fonctionnalité standard de Python, surtout si vous installez à partir de Python.organisation. Auparavant, nous avions de nombreuses implémentations tierces appelées virtualenv,pyenv,etc.

Cela a donné naissance à des logiciels de plus en plus volumineux comme Anaconda, particulièrement appréciés des data scientists. Il est bon d'avoir enfin un outil simpliste pour gérer les packages Python sans avoir à installer beaucoup d'autres indésirables sans rapport. Vous pouvez en savoir plus sur venv ici.

Ajoutez des gestes de souris à Windows 10 à l'aide de ces outils gratuits
Ces dernières années, les ordinateurs et les systèmes d'exploitation ont considérablement évolué. Il fut un temps où les utilisateurs devaient utilise...
Contrôlez et gérez le mouvement de la souris entre plusieurs moniteurs dans Windows 10
Gestionnaire de souris à double affichage vous permet de contrôler et de configurer le mouvement de la souris entre plusieurs moniteurs, en ralentissa...
WinMouse vous permet de personnaliser et d'améliorer le mouvement du pointeur de la souris sur un PC Windows
Si vous souhaitez améliorer les fonctions par défaut de votre pointeur de souris, utilisez un logiciel gratuit WinMouse. Il ajoute plus de fonctionnal...