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:50]
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 14: Línia 24:
   * **''venv''** : Des de Python 3.3 es pot amb l'eina que porta ja el propi intèrpret.   * **''venv''** : Des de Python 3.3 es pot amb l'eina que porta ja el propi intèrpret.
   * **''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 }} 
  
 \\ \\
  
-===== Pre-requeriments per a Virtualenv =====+===== Requeriments per a Virtualenv =====
   * Comprova la versió que tens de Python:<code>$ python --version</code>   * Comprova la versió que tens de Python:<code>$ python --version</code>
   * En els exemples utilitzarem Python 3. Si no està instal·lat, ho pots fer amb:<code>$ sudo apt install python3</code>   * En els exemples utilitzarem Python 3. Si 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> 
 + 
 +Típicament 
 +<code>$ python -m venv env</code> 
 + 
 +Veurem que s'ha creat una carepta ''env'' on hi ha els binaris de Python i el gestor de paquets ''pip''.
  
 \\ \\
  
 ===== Virtualenv ===== ===== 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>
 +
 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ó. 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ó.
  
Línia 40: Línia 61:
  
 Això ens crearà una carpeta ''envtest'' amb l'intèrpret de Python pertinent i on s'emmagatzemaran les llibreries que instal·lem amb ''pip''. Això ens crearà una carpeta ''envtest'' amb l'intèrpret de Python pertinent i on s'emmagatzemaran les llibreries que instal·lem amb ''pip''.
 +
 +===== 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''.
 +
 +**Per treballar com a desenvolupador NO cal fer ''sudo''**, llevat de poquíssimes excepcions.
 +
 +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.
 +
 +**La gestió del permisos i propietat dels arxius és fonamental per a la seguretat**.
 +</WRAP>
  
 \\ \\
Línia 57: 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 86: 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.1634547023.txt.gz · Darrera modificació: 2021/10/18 08:50 per enrique_mieza_sanchez