bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


python_venv

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
python_venv [2021/10/18 08:35]
enrique_mieza_sanchez
python_venv [2024/06/25 18:30] (actual)
enric_mieza_sanchez
Línia 1: Línia 1:
 ~~REVEAL~~ ~~REVEAL~~
 ====== Python Virtual Environment ====== ====== Python Virtual Environment ======
 +Les eines de //virtual environment// per a Python es fan servir per a aïllar cada aplicació (i les seves llibreries i dependències) del sistema operatiu i de les altres aplicacions.
  
 +{{ python-virtualenv-project-structure.jpg?direct&400 }}
 +
 +==== Altres articles sobre Python en aquest web ====
 +{{topic>python}}
 +
 +\\
 +
 +===== Python virtualenv =====
   * Desenvolupar o posar en producció **aplicacions en Python requereix diferents llibreries per cada projecte**.   * Desenvolupar o posar en producció **aplicacions en Python requereix diferents llibreries per cada projecte**.
-  * Es solen instal·lar amb el **gestor de paquets ''pip''**.+  * Les llibreries es solen instal·lar amb el **gestor de paquets ''pip''**.
   * Es desaconsella instal·lar llibreries al propi sistema operatiu, pot interferir en el seu funcionament   * Es desaconsella instal·lar llibreries al propi sistema operatiu, pot interferir en el seu funcionament
     * Diverses apps o el SO poden requerir diferents versions de Python o de les llibreries.     * Diverses apps o el SO poden requerir diferents versions de Python o de les llibreries.
 +    * PROHIBIT <del>sudo pip install ...</del>
   * Les eines de //virtual environment// creen **entorns aïllats** del propi SO i així no s'interfereixen.   * Les eines de //virtual environment// creen **entorns aïllats** del propi SO i així no s'interfereixen.
  
Línia 15: Línia 25:
   * **''virtualenv''** : es pot instal·lar el paquet ''virtualenv'' amb el gestor PIP.   * **''virtualenv''** : es pot instal·lar el paquet ''virtualenv'' amb el gestor PIP.
  
-{{ python-virtualenv-project-structure.jpg?direct&400 }}+\\ 
 + 
 +===== Requeriments per a Virtualenv ===== 
 +  * Comprova la versió que tens de Python:<code>python --version</code> 
 +  * En els exemples utilitzarem Python 3Si no està instal·lat, ho pots fer amb:<code>$ sudo apt install python3</code> 
 +  * Instal·la el mòdul ''venv'':<code>$ sudo pip install python3-venv</code>
  
 \\ \\
  
 ===== Built-in venv ===== ===== Built-in venv =====
-Referència: +Ve [[https://docs.python.org/es/3/library/venv.html|incorporat a l'intèrpret des de Python v3.3]]. És la forma recomanada, tot i que sovint cal instal·lar una dependència que no venia amb Python: 
-  * https://docs.python.org/es/3/library/venv.html+  $ sudo apt install python3-venv
  
-\\+Per crear el ''virtual environment'' fem: 
 +<code>$ python -m venv <carpeta_venv></code>
  
-===== Virtualenv ===== +Típicament 
-Abans de la versió 3.3 de Python es feia servir la [[https://virtualenv.pypa.io/en/latest/installation.html|utilitat virtualenv]] que ens resol aquest problema. Si treballem en aquestes versions només tindrem disponible aquesta opció.+<code>$ python -m venv env</code>
  
-Necessitem Python 3, que ja sol venir instal·latSi no fos així, pots instal·lar-ho amb:+Veurem que s'ha creat una carepta ''env'' on hi ha els binaris de Python i el gestor de paquets ''pip''.
  
-    $ sudo apt install python3+\\
  
-A més, necessitem ''**pip3**''el gestor de paquets per a Python més conegutEn Debian/Ubuntu l'instal·lem amb:+===== Virtualenv ===== 
 +<WRAP important> 
 +Si has creat el teu ''env'' amb el //built-in venv// de Python, no cal que segueixis aquesta secció (virtualenv és una forma alternativa de fer el que Python-venv ja ens ha fet)Pots anar directament a la secció "Utilitzant Virtualenv"
 +</WRAP>
  
-    $ sudo apt install python3-pip+Abans de la versió 3.3 de Python es feia servir la [[https://virtualenv.pypa.io/en/latest/installation.html|utilitat virtualenv]]. Si treballem en Pyhton 2.x o <3.3 només tindrem disponible aquesta opció.
  
-Ara podrem instal·lar el paquet ''**virtualenv**'':+  * Necessitem ''**pip3**'', el gestor de paquets per a Python més conegut. En Debian/Ubuntu l'instal·lem amb:<code>$ sudo apt install python3-pip</code> 
 +  * Ara podrem instal·lar el paquet ''**virtualenv**'':<code>$ sudo pip3 install virtualenv</code> 
 +  * Podem comprovar les llibreries instal·lades en el sistema operatiu fent<code>$ pip3 freeze</code> 
 +  * Podem crear ara, un entorn de test:<code>$ virtualenv envtest</code>
  
-    $ sudo pip3 install virtualenv+Això ens crearà una carpeta ''envtest'' amb l'intèrpret de Python pertinent i on s'emmagatzemaran les llibreries que instal·lem amb ''pip''.
  
-Podem comprovar les llibreries instal·lades en el sistema operatiu fent+===== Utilitzant sudo ===== 
 +<WRAP tip> 
 +Aquestes ordres d'instal·lació del ''virtualenv'' (el paquet de PyPI instal·lat amb ''pip'') són les úniques que necessiten ''sudo''.
  
-    $ pip3 freeze+**Per treballar com a desenvolupador NO cal fer ''sudo''**, llevat de poquíssimes excepcions.
  
-Podem crear araun entorn de test:+Si estem en producciópotser cal algun cop (quan estem en carpetes del sistema), però estigueu atents a fer-ho quan sigui necessari i no fer-ho perquè sí o perquè la instrucció no funciona sense examinar perquè no va.
  
-    $ virtualenv envtest +**La gestió del permisos propietat dels arxius és fonamental per a la seguretat**. 
-     +</WRAP>
-Això ens crearà una carpeta ''envtest'' amb l'intèrpret de Python pertinent on s'emmagatzemaran les llibreries que instal·lem amb ''pip''.+
  
 \\ \\
Línia 54: Línia 77:
 ===== Utilitzant virtualenv ===== ===== Utilitzant virtualenv =====
  
-Activem el virtualenv: +  * Activem el virtualenv:<code>$ source envtest/bin/activate</code> 
- +  Veureu que el //prompt// ara indica el nom del ''virtualenv''. Si ara mirem les llibreries veurem que està buit:<code>(envtest) $ pip3 freeze</code> 
-    $ source envtest/bin/activate +  Podem instal·lar la primera llibreria, per exemple:<code>(envtest) $ pip3 install flask</code> 
- +  Si comproveu amb ''pip3 freeze'' veureu que apareix la llibreria //flask// i totes les seves dependències. 
-Veureu que el //prompt// ara indica el nom del ''virtualenv''. Si ara mirem les llibreries veurem que està buit: +  En qualsevol moment podem sortir del nostre ''virtualenv'' amb la instrucció ''deactivate'':<code>(envtest) $ deactivate</code>
- +
-    (envtest) $ pip3 freeze +
- +
-Podem instal·lar la primera llibreria, per exemple: +
- +
-    (envtest) $ pip3 install flask +
- +
-Si comproveu amb ''pip3 freeze'' veureu que apareix la llibreria //flask// i totes les seves dependències. +
- +
-En qualsevol moment podem sortir del nostre ''virtualenv'' amb la instrucció ''deactivate'' +
- +
-    (envtest) $ deactivate+
  
 \\ \\
Línia 78: Línia 89:
  
 <file requirements.txt> <file requirements.txt>
-  certifi==2019.6.16 +click==8.0.3 
-  chardet==3.0.4 +Flask==2.0.2 
-  defusedxml==0.6.0 +importlib-metadata==4.8.1 
-  Django==2.2.13 +itsdangerous==2.0.1 
-  django-admin-select2==1.0.1 +Jinja2==3.0.2 
-  django-admin-sortable2==0.7.2 +MarkupSafe==2.0.1 
-  django-appconf==1.0.3 +pkg-resources==0.0.0 
-  django-easy-select2==1.5.6 +typing-extensions==3.10.0.2 
-  django-richtextfield==1.4.0 +Werkzeug==2.0.2 
-  django-select2==7.0.5 +zipp==3.6.0
-  django-test-without-migrations==0.6 +
-  httplib2==0.18.0 +
-  idna==2.8+
 </file> </file>
  
 \\ \\
  
-===== Creant arxiu requirements.php =====+===== Creant arxiu requirements.txt =====
 Per crear l'arxiu, cal que estiguem en el ''virtualenv'' pertinent. Volcarem les seves llibreries amb: Per crear l'arxiu, cal que estiguem en el ''virtualenv'' pertinent. Volcarem les seves llibreries amb:
-  (env) $ pip freeze > requirements.txt+<code>(env) $ pip freeze > requirements.txt</code>
  
 Recordeu incloure ''requirements.txt'' en el [[vcs|sistema de control de versions]], típicament amb [[Git]]: Recordeu incloure ''requirements.txt'' en el [[vcs|sistema de control de versions]], típicament amb [[Git]]:
-  (env) $ git add requirements.txt+<code>(env) $ git add requirements.txt</code>
  
 \\ \\
Línia 107: Línia 115:
 Si estem posant en marxa un projecte que acabem de descarregar, podem carregar les seves llibreries. Si estem posant en marxa un projecte que acabem de descarregar, podem carregar les seves llibreries.
  
-  - Primer caldrà crear un ''virtualenv'' per aïllar-nos del SO i dels altres projectes+  - Si cal, creem un ''virtualenv'' per aïllar-nos del SO i dels altres projectes. Per exemple, amb el //built-in// ''venv'':<code>python -m venv env</code> 
 +  - Activem el ''virtualenv'':<code>$ source env/bin/activate</code>
   - Ara ja podem carregar les llibreries:<code>(env) $ pip install -r requirements.txt</code>   - Ara ja podem carregar les llibreries:<code>(env) $ pip install -r requirements.txt</code>
  
 \\ \\
  
python_venv.1634546112.txt.gz · Darrera modificació: 2021/10/18 08:35 per enrique_mieza_sanchez