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:14] – [Virtualenv] 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 (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.+=====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, sur un hôte partagé.+<code bash> 
 +python3 -m pip install psutil --user  
 +python3 -m mon_fichier.py 
 +</code>
  
-Dans tous ces casvirtualenv 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 à l’échelle mondiale).+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.
  
-The basic problem being addressed is one of dependencies and versionsand indirectly permissionsImagine 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.+Si besoinajouter à ~.bashrc 
 +<code bash>export PYTHONPATH="${PYTHONPATH}:~/.local"</code>
  
-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.+====Liste des package installés localement==== 
 +Donc sans les packages du système et les packages installés dans le système. 
 +  python3 -m pip list --user 
 +===== Environnement Virtuel =====
  
-Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.+==== Installation de venv ==== 
 +<code bash> 
 +# 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
  
-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).+==== Initialisation ==== 
 +<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_envmachin@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>
  
-====Ressources==== +====Arguments spécifiques====
-  * [[https://deusyss.developpez.com/tutoriels/Python/packaging_pypi/|Packaging Python et PyPI de GALODE Alexandre sur developpez.com]]+
  
-=====Comment créer un virtualenv ?===== +===Installation avec les sources dans un dossier=== 
-Voici la marche à suivre pour créer le « virtualenv ». +<code bash>python3 -m pip install --no-index --find-links=/media/data/exclude/clones/mediapipe mediapipe</code>
-====Installation==== +
-Installe python3-venv python3.5-venv +
-  sudo apt-get install python3-venv+
  
-Crée un dossier /home/user/VEnv +===Avec accès aux package système=== 
-====Utilisation====+  * https://pip.pypa.io/en/stable/user_guide/
  
-  python3 -m venv ~/VEnv+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>
      
-===1ère solution===+--no-site-packages est la valeur par défaut
  
-  source ~/VEnv/bin/activate+===Depuis un Git=== 
 +<code bash>python3 -m pip install -e git+https://git.repo/some_pkg.git#egg=SomeProject</code>
  
-équivalent à+====Exécution d'un script de votre projet==== 
 +<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> 
 + 
 +==== Relance pour installer de nouveaux package ==== 
 +<code bash> 
 +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>  
  
-  source /home/user/VEnv/bin/activate 
      
-Le prompt devient:+=====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>
  
-  (VEnv) user@PC01:~$  +=====Travailler avec Geany et un Virtual Env===== 
- +  * **[[https://stackoverflow.com/questions/42013705/using-geany-with-python-virtual-environment|Using geany with python virtual environment]]** 
-Installation des modules appelés par votre projet: +Dans "Construire" / "Définir les commandes de construction": 
- +  ../mon_env/bin/python3 "%f" 
-  pip3 install wheel +{{:media_14:geany_construire.png?200|}} 
-  pip3 install twisted librosa bs4 +{{:media_14:construire_execute.png?400|}} 
- +{{tag>python sb}}
-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===== +
-<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.1535789669.txt.gz · Dernière modification : 2018/09/01 08:14 de serge