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 [2021/02/26 16:37] sergevirtualenv [2022/05/06 15:49] (Version actuelle) – [Pense bêtes] serge
Ligne 6: Ligne 6:
 </WRAP> </WRAP>
  
-<WRAP center round box 60% centeralign+=====Pense bêtes===== 
-Voir aussi: **[[lancer_correctement_python|Lancer correctement python]]** +<code bash
-</WRAP>+# Installation initiale 
 +sudo apt install python3-pip python3-venv 
 +python3 -m pip install --upgrade pip
  
-=====On recommence tout=====+# 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>
  
-Un tuto avec du python2.7 en 2020, cela ne ferait pas sérieux! +=====Version de python===== 
- +Si vous avez plusieurs versions de pythonvous devez remplacer  
-https://docs.python.org/fr/3/tutorial/venv.html +  python3 
- +
- +
- +
-====== Lancer correctement python ====== +
- +
-<WRAP center round box 60% centeralign> +
-**[[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%2Flancer_correctement_python|English Version]]** +
-</WRAP> +
- +
-<WRAP center round info centeralign 60%> +
-**Niveau Pro** +
-</WRAP> +
- +
-<WRAP center round box 60% centeralign> +
-Voir aussi: **[[virtualenv|Virtualenv]]** +
-</WRAP> +
- +
-**[[http://sametmax.com/|Sam et Max]]** c'est fini, mais le site est toujours une mine de [[https://la-philosophie.com/le-bon-sens-est-la-chose-du-monde-la-mieux-partagee|bon sens]]. +
- +
-L'avant dernier post: **[[http://sametmax.com/lancer-correctement-python-et-ses-commandes-cousines/|Lancer correctement python et ses commandes cousines]]** ne déroge pas à la règle. +
- +
-===== Le bon sens ===== +
-Descartes: Discours de la Méthode: +
- +
-"Le bon sens est la chose la mieux partagée car chacun pense en être si bien pourvuque même ceux qui sont les plus difficiles à contenter en toute autre chose, n'ont point coutume d'en désirer plus qu'ils en ont." +
- +
-Petit extrait de [[http://www.aline-louangvannasy.org/2014/09/le-bon-sens.html|aline-louangvannasy.org]]: +
- +
-Descartes observe que généralement nous  ne mettons pas  en question nos propres opinions lorsque nous affirmons quelque chose dans une conversation. Nous considérons tous que nous "avons" raison et même suffisamment de raison (avoir est synonyme ici de posséder). C’est ainsi qu'il ne viendrait à l'esprit de personne de demander plus de "bon sens" ou de raison. +
-===== Ressources ===== +
- +
-  * **[[https://docs.python.org/fr/3/tutorial/index.html|Le tutoriel Python]]** de la fondation Python fr. +
-=====Ce qu'il faut retenir par cœur===== +
- +
-====Installer un package==== +
-Le package est installé dans le home du user: +
- +
-  python3.7 -m pip install black --user +
      
-Pour lancer un script: +par 
- +  python3.x
-  python3.7 -m mon_fichier.py +
- +
-====Mettre à jour pip====+
      
-  python3.-m pip install --upgrade pip+ou x = 6 ou ou 8 ou 9 ou 10 ou 11 ...
      
-Si vous avez cette alerte: 
-  WARNING: The scripts pip, pip3 and pip3.7 are installed in '/home/toto/.local/bin' which is not on PATH. 
-  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. 
      
-Ajouter au fichier ~/.bashrc+=====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
  
-  # Pour pip, pip3 and pip3.7 +===== Installation d'un package sans environnement virtuel =====
-  export PYTHONPATH="${PYTHONPATH}:/home/toto/.local/bin" +
-   +
-=====VirtualEnv=====+
  
-**[[virtualenv|Python: Virtualenv]]**+<code bash> 
 +python3 -m pip install psutil --user  
 +python3 -m mon_fichier.py 
 +</code>
  
 +Notez le –user, ainsi 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 path, personnellement python m'a toujours trouvé les packages de .local, sur debian et ubuntu.
  
 +Si besoin, ajouter à ~.bashrc
 +<code bash>export PYTHONPATH="${PYTHONPATH}:~/.local"</code>
  
-=====Virtualenv===== +====Liste des package installés localement==== 
-Extrait de [[https://www.delahayeyourself.info/modules/LP%20Web%20Dynamique/python/tp3_pip_virtualenv/|delahayeyourself.inf]]:+Donc sans les packages du système et les packages installés dans le système. 
 +  python3 -m pip list --user 
 +===== Environnement Virtuel =====
  
-**virtualenv** est un outil pour créer un environnement Python isolé.+==== 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
  
-Le problème de base à résoudre est celui des dépendances et des versions et des autorisations indirectesImaginez que vous ayez une application qui nécessite la version 1 de LibFoo, mais une autre application nécessite la version 2Comment 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.+==== 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_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>
  
-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.+====Arguments spécifiques====
  
-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 dont vous n'avez pas les droits ?+===Installation avec les sources dans un dossier=== 
 +<code bash>python3 -m pip install --no-index --find-links=/media/data/exclude/clones/mediapipe mediapipe</code>
  
-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).+===Avec accès aux package système=== 
 +  * https://pip.pypa.io/en/stable/user_guide/
  
-====Ressources==== +Permet à python du venv d'accéder au package système: --system-site-packages  
-  * **[[https://deusyss.developpez.com/tutoriels/Python/Virtualenvs/|Les Virtualenvs de GALODE Alexandre sur developpez.com]]** +<code bash>python3 -m pip install ---system-site-packages requirements.txt</code>
-  * [[https://deusyss.developpez.com/tutoriels/Python/Virtualenvs/#LVI-D| Copie et déploiement de virtualenv]] +
-  * [[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]] +
-=====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:+--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==== 
-  pip3 install twisted librosa bs4 +<code bash> 
-Puisque l'installation se fait dans le home, pas besoin d'être root, pas de sudo. +cd /le/dossier/de/votre/projet/truc/ 
-   +./mon_env/bin/python3 ./sous_dossier/main.py 
-===2ème solution=== +# Dans Geany, commande de construction 
-Utiliser l’interpréteur installé dans le « virtualenv » : +../mon_env/bin/python3 "%f" 
-    * ~/VEnv/bin/python3` (qui peut être utilisé comme shebang aussi bien sur)+</code>
  
-===Ensuite=== +==== Relance pour installer de nouveaux package ==== 
-  cd /vers/votre/projet +<code bash> 
-  nohup python3 main.py & +cd /le/dossier/de/votre/projet/truc/ 
-   +source mon_env/bin/activate 
-Le script main.py continuera a tourner dans l'environnement virtuelmême si la console est fermée.+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 virtualenvil 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>  
  
-===== 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 === 
-<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: 
-  pip3 install -r requirements.txt 
-   
-===Exemple===   
-Ouvrir un terminal dans le dossier de votre projet:   
-  python3 -m venv ~/VEnv 
-  source ~/VEnv/bin/activate 
-  python3 -m pip install -r requirements.txt 
-  python3 mon_script.py 
      
 +=====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>
  
- {{tag>python sb}}+=====Travailler avec Geany et un Virtual Env===== 
 +  * **[[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": 
 +  ../mon_env/bin/python3 "%f" 
 +{{:media_14:geany_construire.png?200|}} 
 +{{:media_14:construire_execute.png?400|}} 
 +{{tag>python sb}}
virtualenv.1614357477.txt.gz · Dernière modification : 2021/02/26 16:37 de serge