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.
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 |
pip
.
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.
$ python --version
$ sudo apt install python3
venv
:$ sudo pip install python3-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
.
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ó.
pip3
, el gestor de paquets per a Python més conegut. En Debian/Ubuntu l'instal·lem amb:$ sudo apt install python3-pip
virtualenv
:$ sudo pip3 install virtualenv
$ pip3 freeze
$ 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
.
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.
$ source envtest/bin/activate
virtualenv
. Si ara mirem les llibreries veurem que està buit:(envtest) $ pip3 freeze
(envtest) $ pip3 install flask
pip3 freeze
veureu que apareix la llibreria flask i totes les seves dependències.virtualenv
amb la instrucció deactivate
:(envtest) $ deactivate
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
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
Si estem posant en marxa un projecte que acabem de descarregar, podem carregar les seves llibreries.
virtualenv
per aïllar-nos del SO i dels altres projectes. Per exemple, amb el built-in venv
:python -m venv env
virtualenv
:$ source env/bin/activate
(env) $ pip install -r requirements.txt