Environnements virtuels dans Python 3

Environnements virtuels dans 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 fini avec eux, les désinstaller ne suffit jamais. Les forfaits laissent des tonnes de dossiers et de fichiers. Ils ont besoin de nombreux autres packages (obscurs) qui sont également laissés pour compte dans le sillage des choses. Lentement mais sûrement, ces choses s'accumulent dans votre poste de travail et bien qu'elles ne puissent pas enrober une partie importante de votre espace disque, ils peuvent causer d'autres problèmes.

Dépendances plus anciennes

Les packages plus anciens peuvent s'attarder et votre code Python les utilisera volontiers. Ce n'est pas un problème si vos scripts Python sont censés fonctionner localement, et non à des fins industrielles. Les scientifiques des données, les étudiants et même les personnes ordinaires automatisant leur tâche quotidienne peuvent simplement continuer à utiliser les packages plus anciens sans beaucoup de problème.

Le problème commence lorsque vous expédiez votre code en production. Lorsque vous faites cela, il y a de fortes chances que vous enverrez simplement votre script principal et pas 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 ceci:

demande d'importation

Le forfait de demande fourni par AWS Lambda sera différent de votre plus ancien et, par conséquent, le programme pourrait s'écraser.

Conflits

Les conflits peuvent également entrer dans l'image où différents projets utilisent différentes versions du même package. Peut-être que certains de vos projets plus anciens ont besoin des anciens forfaits PIP. Mais vous pourriez avoir besoin du nouveau package pour d'autres projets. Exécution de Pip Installer -U mettra à niveau le package à travers votre système d'exploitation provoquant des problèmes lorsque vous revenez à la maintenance de vos anciens projets.

Environnements virtuels Python

Si vous utilisez une version de Python au-dessus de 3.5, vous pouvez utiliser un module intégré appelé Venv pour créer ce qu'on appelle les environnements virtuels Python. Ce que fait ce module, c'est 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 «activer». 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 Installer, les packages seront installés à l'intérieur de ce dossier et nulle part ailleurs. Une fois que vous avez terminé d'utiliser un environnement, vous pouvez simplement le «désactiver» et seul les packages Global PIP seront disponibles pour vous.

Si vous utilisez Ubuntu 18.04 et plus, 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 que dans votre environnement virtuel si vous le préférez de cette façon.

Installer Venv et créer des 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é, non plus pip. Installons juste Venv.

$ apt install python3-venv

Ensuite, nous allons dans le répertoire à l'intérieur desquels vous voulez que votre répertoire environnemental virtuel soit créé. Pour moi c'est ~ / project1

$ cd ~ / project1

Créez votre Venv avec la commande suivante, remarquez que My-env est juste le nom de cet environnement, vous pouvez le nommer comme vous voulez:

$ python3 -m venv my-env

Remarque: Certaines installations de Python3, comme celles disponibles sur Windows, vous appelez l'interprète Python en utilisant Just Python et non Python3, mais cela passe du système en système. Par souci de cohérence, j'utiliserai uniquement Python3.

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

  1. Courir,
    $ source ~ / project1 / my-env / bin / activer Si vous utilisez Bash.
    Il existe d'autres scripts appelés activer.pêcher et activer.CSH pour les personnes qui utilisent des coquilles de poisson et de CSH, respectivement.
  2. Sur Windows, le script peut être invoqué en fonctionnant:
    >.\ my-env \ scripts \ activer.chauve souris Si vous utilisez une invite de commande, ou,
    >.\ my-env \ scripts \ activer.PS1 Si vous utilisez PowerShell.

En utilisant des environnements virtuels

Une fois que vous exécutez le script avec succès, vous remarquerez que l'invite change vers quelque chose comme ce qui est illustré ci-dessous, vous pouvez désormais installer des packages à l'aide de PIP:

(My-env) Recomas d'installation de $ PIP3
## Nous pouvons répertorier les packages installés à l'aide de la commande 'Pip Freeze'
(My-env) Freeze $ Pip3
certif == 2018.dix.15
Chardet == 3.0.4
idna == 2.7
pkg-resources == 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 ne seront enregistrés que dans le répertoire de l'environnement virtuel (MY-ENV), peu importe où vous êtes dans le système de fichiers.

Pour sortir de l'environnement virtuel, vous pouvez taper désactiver dans l'invite et vous reviendrez à utiliser 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 de Global Pip.

Pour vous 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.org. Auparavant, nous avions l'habitude d'avoir de nombreuses implémentations tierces appelées virtualenv, pyenv, etc.

Cela a donné lieu à de plus en plus de logiciels gonflés comme Anaconda, en particulier populaire parmi les scientifiques des données. Il est bon d'avoir enfin un outil simpliste pour gérer les packages Python sans avoir à installer beaucoup d'autres ordures non apparentées. Vous pouvez en savoir plus sur Venv ici.