Virtualenv
Virtualenv és un programari que ens permet crear un entorn aïllat de llibreries i executables per a Python.
Aquesta eina és molt important ja que ens permet tenir, dins d'un mateix servidor, diverses versions de cada llibreria, i no interferir amb els paquets que té instal·lats el sistema operatiu.
De fet, és una bona pràctica instal·lar el mínim de llibreries a nivell de sistema operatiu, i fer tots els desenvolupaments o desplegaments cadascú amb els seus binaris i llibreries en un virtualenv.
Contingut
Instal·lació
Gestor de paquets Python PIP
Primer de tot ens cal tenir instal·lat el gestor de paquets Python PIP (la "alternativa" a easy_install, però que ara per ara ja és la primera opció). En un entorn Debian/Ubuntu el podríem instal·lar amb un apt-get install python-pip
. Però millor fer-ho a través del script següent, ja que aconseguirem la darrera versió:
https://pip.pypa.io/en/stable/installing/
Descarrega l'script get-pip.py i executa amb sudo per que s'instal·li a nivell de sistema:
$ sudo python get_pip.py
Podem saber quines llibreries hi ha instal·lades en el sistema fent:
$ pip freeze
Preneu nota, perquè aquesta comanda és molt útil per reproduir entorns de desenvolupament.
PIP es pot actualitzar a ell mateix amb:
$ pip install --upgrade pip
Virtualenv package
Un cop instal·lat PIP, podrem descarregar i instal·lar Virtualenv en el sistema. Serà el darrer cop que fem sudo, ja que, tal i com hem dit, la bona pràctica és instal·lar el mínim de paquets a nivell de sistema operatiu.
$ sudo pip install virtualenv
Si volguéssim instal·lar alguna versió concreta, podríem fer algo així com
$ sudo pip install virtualenv==15.0.1
O bé aquesta, que instal·laria la darrera versió, o al menys alguna que superés la indicada.
$ sudo pip install virtualenv>=15.0.1
Crear entorns virtuals
Per crear un entorn de programació virtual, ara podrem fer:
$ virtualenv --no-site-packages ~/env1
Ens crearà una carpeta al nostre home directory anomenada "env1" amb aquesta estructura:
env11 ├── bin ├── include │ └── python2.7 -> /usr/include/python2.7 ├── lib │ └── python2.7 │ ├── distutils │ ├── encodings -> /usr/lib/python2.7/encodings │ ├── lib-dynload -> /usr/lib/python2.7/lib-dynload │ └── site-packages └── local ├── bin -> /home/enric/env11/bin ├── include -> /home/enric/env11/include └── lib -> /home/enric/env11/lib
Com podem veure, disposem d'una carpeta amb binaris (bin) on hi trobarem pip, python i sobretot, un script activate que farem servir per configurar la nostra shell dintre d'aquest entorn.
Per configurar la nostra shell dins del virtualenv "env1" farem:
$ source ~/env1/bin/activate
I ara el nostre prompt serà aquest altre:
(env1) $
El què significa que a partir d'ara, els binaris i llibreries a utilitzar seran preferentment els que hi ha al nostre virtualenv.
Genial, oi? 8)
Bé, ja sé que encara no us en feu càrrec de la magnitud d'aquesta eina, però jo ho anireu veient ;)
Òbviament podeu crear diversos entorns virtuals, cadascun per un desenvolupament o desplegament diferent.