Outils pour utilisateurs

Outils du site


virtualenv

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
virtualenv [2018/09/01 08:24] sergevirtualenv [2022/05/06 15:49] (Version actuelle) – [Pense bêtes] serge
Ligne 1: Ligne 1:
 ====== Python: Virtualenv ====== ====== Python: Virtualenv ======
  
-<WRAP center round info centeralign 30%> +<WRAP center round box 60centeralign
-**Niveau Pro**+**[[toutes_les_pages_sur_python|Toutes les pages sur Python]] sans les pages sur {{tagpage>kivy|Kivy}}**\\ 
 +**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fvirtualenv|English Version]]**
 </WRAP> </WRAP>
-{{tag>python sb}} 
  
-=====Virtualenv=====+=====Pense bêtes===== 
 +<code bash> 
 +# Installation initiale 
 +sudo apt install python3-pip python3-venv 
 +python3 -m pip install --upgrade pip
  
-**virtualenv** est un outil pour créer un environnement Python isolé.+# Dans le dossier du projet 
 +python3 -m venv mon_env 
 +source mon_env/bin/activate 
 +python3 -m pip install -r requirements.txt 
 +python3 -m pip install Pillow==7.1.1 
 +pip freeze > all_requirements.txt 
 +</code>
  
-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 LibFoomais 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.+=====Version de python===== 
 +Si vous avez plusieurs versions de python, vous devez remplacer  
 +  python3  
 +   
 +par 
 +  python3.x 
 +   
 +ou x = 6 ou 7 ou 8 ou 9 ou 10 ou 11 ... 
 +   
 +   
 +=====Ressources===== 
 +  * **[[https://docs.python.org/fr/3/tutorial/index.html|Le tutoriel Python]]** de la fondation Python fr. 
 +  * **[[https://docs.python.org/fr/3/tutorial/venv.html|Environnements virtuels et paquets]]** sur la Doc officielle docs.python.org
  
-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.+===== Installation d'un package sans environnement virtuel =====
  
-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 ?+<code bash> 
 +python3 -m pip install psutil --user  
 +python3 -m mon_fichier.py 
 +</code>
  
-Dans tous ces cas**virtualenv** peut vous aider. Il crée un environnement qui possède ses propres répertoires d’installationqui 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).+Notez le –userainsi que les -m.\\ 
 +Ceci va installer psutil dans ~.local, pas au niveau du système. L'option -m exécute pip en tant que module. Il y a un warning sur le python pathpersonnellement python m'a toujours trouvé les packages de .local, sur debian et ubuntu.
  
-====Ressources==== +Si besoin, ajouter à ~.bashrc 
-  * **[[https://deusyss.developpez.com/tutoriels/Python/packaging_pypi/|Packaging Python et PyPI de GALODE Alexandre sur developpez.com]]**+<code bash>export PYTHONPATH="${PYTHONPATH}:~/.local"</code>
  
-=====Comment créer un virtualenv ?===== +====Liste des package installés localement==== 
-Voici la marche à suivre pour créer le « virtualenv ».+Donc sans les packages du système et les packages installés dans le système. 
 +  python3 -m pip list --user 
 +===== Environnement Virtuel =====
  
-====Installation==== +==== Installation de venv ==== 
-Installe python3-venv python3.5-venv +<code bash> 
-  sudo apt-get install python3-venv+# Mise à jour de pip 
 +python3 -m pip install --upgrade pip 
 +# Installation de venv 
 +sudo apt install python3-venv 
 +</code> 
 +=====Ressources===== 
 +  * **https://packaging.python.org/** la doc officielle
  
-Crée un dossier /home/user/VEnv +==== Initialisation ==== 
-====Utilisation====+<code bash> 
 +cd /le/dossier/de/votre/projet/truc/ 
 +# Création du dossier environnement si pas encore créé 
 +python3 -m venv mon_env 
 +# Activation  
 +source mon_env/bin/activate 
 +# le prompt devient (mon_env) machin@127:/../../../projets/truc/ 
 +# Installation des package 
 +python3 -m pip install -r requirements.txt 
 +# Installation d'un package supplémentaire 
 +python3 -m pip install Pillow==7.1.1 
 +# Création ou re-création des requirements 
 +pip freeze > requirements.txt 
 +</code>
  
-  python3 -m venv ~/VEnv +====Arguments spécifiques====
-   +
-===1ère solution===+
  
-  source ~/VEnv/bin/activate+===Installation avec les sources dans un dossier=== 
 +<code bash>python3 -m pip install --no-index --find-links=/media/data/exclude/clones/mediapipe mediapipe</code>
  
-équivalent à+===Avec accès aux package système=== 
 +  * https://pip.pypa.io/en/stable/user_guide/
  
-  source /home/user/VEnv/bin/activate+Permet à python du venv d'accéder au package système: --system-site-packages  
 +<code bash>python3 -m pip install -r --system-site-packages requirements.txt</code>
      
-Le prompt devient:+--no-site-packages est la valeur par défaut
  
-  (VEnv) user@PC01:~$ +===Depuis un Git=== 
 +<code bash>python3 -m pip install -e git+https://git.repo/some_pkg.git#egg=SomeProject</code>
  
-Installation des modules appelés par votre projet: +====Exécution d'un script de votre projet==== 
-  * [[https://deusyss.developpez.com/tutoriels/Python/packaging_pypi/#LIV|Wheel : le nouveau format officiel]]+<code bash> 
 +cd /le/dossier/de/votre/projet/truc/ 
 +./mon_env/bin/python3 ./sous_dossier/main.py 
 +Dans Geany, commande de construction 
 +../mon_env/bin/python3 "%f" 
 +</code>
  
-  pip3 install setuptools +==== Relance pour installer de nouveaux package ==== 
-  pip3 install wheel +<code bash> 
-  pip3 install twisted librosa bs4+cd /le/dossier/de/votre/projet/truc/ 
 +source mon_env/bin/activate 
 +python3 -m pip install some_package 
 +# Mise à jour des requirements 
 +pip freeze > requirements.txt 
 +</code> 
 +==== Génération du fichier 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 dépendances de votre projet.\\ 
 +C'est la liste de tous les paquets que vous avez installé pour votre projet. 
 +<code bash>pip freeze > requirements.txt</code>  
  
-Puisque l'installation se fait dans le home, pas besoin d'être root, pas de sudo.+   
 +=====Création d'un venv avec une autre version de python===== 
 +Installation de python 3.8 sur Xubuntu 18.04 
 +  * https://askubuntu.com/questions/1197683/how-do-i-install-python-3-8-in-lubuntu-18-04 
 +<code bash> 
 +sudo apt update 
 +sudo apt install software-properties-common 
 +sudo add-apt-repository ppa:deadsnakes/ppa 
 +sudo apt install python3.8 
 +</code> 
 +Création d'un venv 
 +<code bash> 
 +cd /mes/projets/keras-jordan-bird/ 
 +python3.8 -m venv mon_env 
 +sudo apt install python3.8-venv python3.8-dev 
 +python3.8 -m venv mon_env 
 +source mon_env/bin/activate 
 +python3.8 -m pip install -r requirements.txt 
 +</code>
  
-===2ème solution==+=====Travailler avec Geany et un Virtual Env===== 
-Utiliser l’interpréteur installé dans le « virtualenv » : +  * **[[https://stackoverflow.com/questions/42013705/using-geany-with-python-virtual-environment|Using geany with python virtual environment]]** 
- +Dans "Construire" / "Définir les commandes de construction": 
-    * ~/VEnv/bin/python` (qui peut être utilisé comme shebang aussi bien sur) +  ../mon_env/bin/python3 "%f" 
- +{{:media_14:geany_construire.png?200|}} 
-Mais je suis noob en console python ! +{{:media_14:construire_execute.png?400|}} 
- +{{tag>python sb}}
- +
- +
- +
- +
-=====Requirement===== +
-<WRAP center round todo centeralign 60%> +
-**A sérieusement améliorer** +
-</WRAP> +
- +
-===Ressources=== +
-  * [[https://deusyss.developpez.com/tutoriels/Python/packaging_pypi/#LIII-D|Installer un groupe de paquets grâce à un fichier requirement]] +
-  * [[https://deusyss.developpez.com/tutoriels/Python/packaging_pypi/#LIII-A|Le format requirement]] +
- +
-===Exemple=== +
-<file txt requirements.txt> +
-twisted +
-service_identity +
-google-auth-oauthlib +
-</file> +
- +
-Dans un terminal, dans le dossier de requirements.txt, installation dans le système: +
-  sudo pip3 install -r requirements.txt+
virtualenv.1535790263.txt.gz · Dernière modification : 2018/09/01 08:24 de serge