bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


Barra lateral

ASIX Administració de Sistemes Informàtics i Xarxes
Tots els mòduls del cicle
MP01 Implantació de sistemes operatius
Totes les UFs del modul
MP02 Gestió de bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Fonaments de maquinari
Totes les UFs del modul
MP06 Administració de sistemes operatius
Totes les UFs del modul
MP07 Planificació i administració de xarxes
Totes les UFs del modul
MP08 Serveis de xarxa i Internet
Totes les UFs del modul
MP09 Implantació d'aplicacions web
Totes les UFs del modul
MP10 Administració de sistemes gestors de bases de dades
Totes les UFs del modul
MP11 Seguretat i alta disponibilitat
Totes les UFs del modul
MP12 Formació i orientació laboral
Totes les UFs del modul
MP13 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP14 Projecte
Totes les UFs del modul
DAM Desenvolupament d’aplicacions multiplataforma
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Accés a dades
Totes les UFs del modul
MP07 Desenvolupament d’interfícies
Totes les UFs del modul
MP08 Programació multimèdia i dispositius mòbils
Totes les UFs del modul
MP09 Programació de serveis i processos
Totes les UFs del modul
MP10 Sistemes de gestió empresarial
Totes les UFs del modul
MP11 Formació i orientació laboral
Totes les UFs del modul
MP12 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP13 Projecte de síntesi
Totes les UFs del modul
MPDual Mòdul Dual / Projecte
DAW Desenvolupament d’aplicacions web
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació
Totes les UFs del modul
MP04 Llenguatge de marques i sistemes de gestió d’informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Desenvolupament web en entorn client
Totes les UFs del modul
MP07 Desenvolupament web en entorn servidor
Totes les UFs del modul
MP08 Desplegament d'aplicacions web
Totes les UFs del modul
MP09 Disseny d'interfícies web
Totes les UFs del modul
MP10 Formació i Orientació Laboral
Totes les UFs del modul
MP11 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP12 Projecte de síntesi
Totes les UFs del modul
SMX Sistemes Microinformàtics i Xarxes
Tots els mòduls del cicle
MP01 Muntatge i manteniment d’equips
Totes les UFs del modul
MP02 Sistemes Operatius Monolloc
Totes les UFs del modul
MP03 Aplicacions ofimàtiques
Totes les UFs del modul
MP04 Sistemes operatius en xarxa
Totes les UFs del modul
MP05 Xarxes locals
Totes les UFs del modul
MP06 Seguretat informàtica
Totes les UFs del modul
MP07 Serveis de xarxa
Totes les UFs del modul
MP08 Aplicacions Web
Totes les UFs del modul
MP09 Formació i Orientació Laboral
Totes les UFs del modul
MP10 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP11 Anglès
Totes les UFs del modul
MP12 Síntesi
Totes les UFs del modul
CETI Ciberseguretat en Entorns de les Tecnologies de la Informació
Tots els mòduls del cicle
python_venv
→ 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

Python virtualenv

  • Desenvolupar o posar en producció aplicacions en Python requereix diferents llibreries per cada projecte.
  • 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
    • Diverses apps o el SO poden requerir diferents versions de Python o de les llibreries.
    • PROHIBIT sudo pip install …
  • Les eines de virtual environment creen entorns aïllats del propi SO i així no s'interfereixen.


→ Slide 3

Opcions de Virtual Environment

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

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


→ Slide 4

Pre-requeriments per a Virtualenv

  • Comprova la versió que tens de Python:
    $ python --version
  • En els exemples utilitzarem Python 3. Si no està instal·lat, ho pots fer amb:
    $ sudo apt install python3


→ Slide 5

Built-in venv

Ve incorporat a l'intèrpret des de Python v3.3. És la forma més senzilla i recomanable ja que no cal instal·lar cap dependència.

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 6

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

  • Necessitem pip3, el gestor de paquets per a Python més conegut. En Debian/Ubuntu l'instal·lem amb:
    $ sudo apt install python3-pip
  • Ara podrem instal·lar el paquet virtualenv:
    $ sudo pip3 install virtualenv
  • Podem comprovar les llibreries instal·lades en el sistema operatiu fent
    $ pip3 freeze
  • Podem crear ara, un entorn de test:
    $ virtualenv envtest

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 7

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 8

Utilitzant virtualenv

  • Activem el virtualenv:
    $ source envtest/bin/activate
  • Veureu que el prompt ara indica el nom del virtualenv. Si ara mirem les llibreries veurem que està buit:
    (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


→ Slide 9

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 10

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 11

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


python_venv.txt · Darrera modificació: 2021/11/15 23:27 per enrique_mieza_sanchez