→ Slide 1

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

↓ Slide 2

Altres articles sobre Python en aquest web

2023/04/19 17:22 ENRIC MIEZA SANCHEZ
2023/06/23 08:47 David Lozano
2019/11/11 15:21 ENRIC MIEZA SANCHEZ
2021/11/24 10:54 ENRIC MIEZA SANCHEZ
2021/11/29 21:25 ENRIC MIEZA SANCHEZ
2022/10/18 17:36 ENRIC MIEZA SANCHEZ
2023/06/30 11:35 Miquel Àngel Amorós
2023/06/27 11:11 MIKEL LOPEZ VILLARROYA
2023/06/28 20:31 EVA BARBEITO ANDRADE
2023/07/06 07:02 RAQUEL ALAMAN NAVAS
2023/07/10 15:04 MAURICI MODOL
2023/07/06 07:22 JOSEP LLADONOSA CAPELL
2023/07/06 08:12 JOSEP LLADONOSA CAPELL
2023/07/06 07:51 JOSEP LLADONOSA CAPELL
2023/07/06 08:01 JOSEP LLADONOSA CAPELL
2020/09/03 20:57 ENRIC MIEZA SANCHEZ
2022/11/30 08:54 ENRIC MIEZA SANCHEZ
2022/07/05 18:00 Josefina Llaberia


→ Slide 3

Python virtualenv


→ Slide 4

Opcions de Virtual Environment

Els virtual environments es poden instal·lar al menys de 2 maneres:


→ Slide 5

Requeriments per a Virtualenv


→ Slide 6

Built-in venv

Ve 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:

$ sudo apt install python3-venv

Per crear el virtual environment fem:

$ python -m venv <carpeta_venv>

Típicament

$ python -m venv env

Veurem que s'ha creat una carepta env on hi ha els binaris de Python i el gestor de paquets pip.


→ Slide 7

Virtualenv

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».

Abans de la versió 3.3 de Python es feia servir la utilitat virtualenv. Si treballem en Pyhton 2.x o <3.3 només tindrem disponible aquesta opció.

Això ens crearà una carpeta envtest amb l'intèrpret de Python pertinent i on s'emmagatzemaran les llibreries que instal·lem amb pip.

→ Slide 8

Utilitzant sudo

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.


→ Slide 9

Utilitzant virtualenv


→ Slide 10

requirements.txt

Una bona pràctica habitual en els projectes desenvolupats en Python és disposar d'un arxiu requirements.txt en l'arrel del projecte que indiqui quines llibreries hem d'instal·lar perquè el projecte funcioni.

click==8.0.3
Flask==2.0.2
importlib-metadata==4.8.1
itsdangerous==2.0.1
Jinja2==3.0.2
MarkupSafe==2.0.1
pkg-resources==0.0.0
typing-extensions==3.10.0.2
Werkzeug==2.0.2
zipp==3.6.0


→ Slide 11

Creant arxiu requirements.txt

Per crear l'arxiu, cal que estiguem en el virtualenv pertinent. Volcarem les seves llibreries amb:

(env) $ pip freeze > requirements.txt

Recordeu incloure requirements.txt en el sistema de control de versions, típicament amb Git:

(env) $ git add requirements.txt


→ Slide 12

Carregant la configuració d'un requirements.txt

Si estem posant en marxa un projecte que acabem de descarregar, podem carregar les seves llibreries.

  1. Si cal, creem un virtualenv per aïllar-nos del SO i dels altres projectes. Per exemple, amb el built-in venv:
    python -m venv env
  2. Activem el virtualenv:
    $ source env/bin/activate
  3. Ara ja podem carregar les llibreries:
    (env) $ pip install -r requirements.txt