Outils pour utilisateurs

Outils du site


virtualenv

Ceci est une ancienne révision du document !


Python: Virtualenv

Niveau Pro

Virtualenv

virtualenv est un outil pour créer un environnement Python isolé.

Le problème de base à résoudre est celui des dépendances et des versions et des autorisations indirectes. Imaginez que vous ayez une application qui nécessite la version 1 de LibFoo, mais une autre application nécessite la version 2. Comment pouvez-vous utiliser ces deux applications? Si vous installez tout dans /usr/lib/python2.7/site-packages (ou quel que soit l’emplacement standard de votre plate-forme), il est facile de vous retrouver dans une situation où vous mettez involontairement à niveau une application qui ne devrait pas être mise à niveau.

Ou plus généralement, que faire si vous souhaitez installer une application et la laisser en place? Si une application fonctionne, toute modification apportée à ses bibliothèques ou aux versions de ces bibliothèques peut briser l'application.

De plus, que faire si vous ne pouvez pas installer les packages dans le répertoire global de sites-packages? Par exemple, sur un hôte partagé.

Dans tous ces cas, virtualenv peut vous aider. Il crée un environnement qui possède ses propres répertoires d’installation, qui ne partage pas les bibliothèques avec d’autres environnements virtualenv (et qui n’a pas accès aux bibliothèques installées à l’échelle mondiale).

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments (and optionally doesn’t access the globally installed libraries either).

Ressources

Comment créer un virtualenv ?

Voici la marche à suivre pour créer le « virtualenv ».

Installation

Installe python3-venv python3.5-venv

sudo apt-get install python3-venv

Crée un dossier /home/user/VEnv

Utilisation

python3 -m venv ~/VEnv

1ère solution

source ~/VEnv/bin/activate

équivalent à

source /home/user/VEnv/bin/activate

Le prompt devient:

(VEnv) user@PC01:~$ 

Installation des modules appelés par votre projet:

pip3 install wheel
pip3 install twisted librosa bs4

Puisque l'installation se fait dans le home, pas besoin d'être root, pas de sudo.

2ème solution

Utiliser l’interpréteur installé dans le « virtualenv » :

  • ~/VEnv/bin/python` (qui peut être utilisé comme shebang aussi bien sur)

Mais je suis noob en console python !

Requirement

A sérieusement améliorer

Ressources

Exemple

requirements.txt
twisted
service_identity
google-auth-oauthlib

Dans un terminal, dans le dossier de requirements.txt, installation dans le système:

sudo pip3 install -r requirements.txt
virtualenv.1535789669.txt.gz · Dernière modification : 2018/09/01 08:14 de serge