Ceci est une ancienne révision du document !
Table des matières
Python: Virtualenv
Niveau Pro
Virtualenv
Extrait de delahayeyourself.inf:
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, 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, par exemple sur un hôte distant (miskin ou rybn) dont vous n'avez pas les droits ?
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 dans le système).
Ressources
Comment créer un virtualenv ?
Voici la marche à suivre pour créer le « virtualenv ».
Installation
sudo apt-get install python3-venv
Utilisation
python3 -m venv ~/VEnv
crée un dossier /home/user/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 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/python3` (qui peut être utilisé comme shebang aussi bien sur)
Ensuite
cd /vers/votre/projet nohup python3 main.py &
Le script main.py continuera a tourner dans l'environnement virtuel, même si la console est fermée.
Requirements.txt
Pour faciliter la distribution de votre projet dans son virtualenv, il est recommandé de produire un fichier requirements.txt qui listera toutes les dependances de votre projet.
Génération du fichier requirements.txt
Pour générer le fichier requirements.txt :
pip freeze > requirements.txt
Installation des modules indiqués dans requirements.txt
- requirements.txt
twisted service_identity google-auth-oauthlib
Dans un terminal, dans le dossier de requirements.txt, installation dans le système:
pip3 install -r requirements.txt
Exemple
Ouvrir un terminal dans le dossier de votre projet:
python3 -m venv ~/VEnv source ~/VEnv/bin/activate pip3 install -r requirements.txt python3 mon_script.py