Home > flask, python > Flask (parte 1): virtualenv

Flask (parte 1): virtualenv

26 Giugno 2015

Molte informazioni di questa guida prendono spunto o sono tradotte dal magnifico libro
“Flask Web Development” di Miguel Grinberg, fondamentale per calarsi nel mondo di Flask.
Altri link fondamentali:
Flask sito ufficiale
il blog dell’autore (Flask mega tutorial)

Il primo passo è installare un ambiente virtuale (ovviamente dopo aver installato Python).

Utilizzeremo virtualenv, un tool che ci permette di fare una copia dell’interprete Python
ed installare su di essa tutti i pacchetti necessari allo sviluppo della nostra applicazione.
Questo è molto comodo dal momento che l’interprete python “principale” installato sul sistema
non verrà mai toccato e rimarrà nel suo stato nativo e “pulito”.
Ogni applicazione avrà quindi al suo interno una copia dell’interprete Python di sistema e tutti
i pacchetti necessari installati.

Controlliamo di non aver già installato questo tool:

$ virtualenv --version

se otteniamo un errore, procediamo con l’installazione.

Su ubuntu da terminale:

$ sudo apt-get install python-virtualenv

Su windows, scarichiamo lo script ez_setup.py dal sito ufficiale
e lo lanciamo con:

>python ez_setup.py
Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-18.0.1.zip
#...
Installing Setuptools
#...
Installing easy_install-2.7.exe script to C:\Python27\Scripts
#...
Finished processing dependencies for setuptools==18.0.1

In caso di problemi con la modifica delle variabili di sistema è possibile
lanciare easy_install dal path evidenziato: C:\Python27\Scripts

>\Python27\Scripts\easy_install.exe virtualenv
Searching for virtualenv
Reading https://pypi.python.org/simple/virtualenv/
Best match: virtualenv 13.0.3
Downloading https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.0.3.tar.gz#md5=cd2043ea72448d65dcc54d33744c2214
#...
Installing virtualenv-2.7.exe script to C:\Python27\Scripts
#...
Finished processing dependencies for virtualenv

Ora creiamo la dir principale della nostra futura applicazione, nel mio caso “fantamanager” e
ci portiamo all’interno di essa creando il clone dell’interprete Python:

da ubuntu:

$ virtualenv venv

o da win:

C:\fantamanager>\Python27\Scripts\virtualenv.exe venv
New python executable in venv\Scripts\python.exe
Installing setuptools, pip, wheel...done.

Ora, all’interno della dir abbiamo una sottodirectory venv con all’interno una
copia “pulita” dell’interprete python.

Ora dobbiamo abilitare venv con il seguente comando:

da ubuntu:

$ source venv/bin/activate

o da win:

C:\fantamanager>venv\Scripts\activate
(venv) C:\fantamanager>

ora è possibile installare i pacchetti necessari.
Il primo fondamentale è flask, quindi:

(venv) C:\fantamanager>pip install flask
#...
Collecting flask
#...
  Downloading Flask-0.10.1.tar.gz (544kB)
    100% |################################| 544kB 401kB/s
Collecting Werkzeug>=0.7 (from flask)
#...
Successfully installed Jinja2-2.7.3 Werkzeug-0.10.4 flask-0.10.1 itsdangerous-0.24 markupsafe-0.23

Una nota va spesa per i pacchetti che vengono installati.
Per non fare impazzire gli utenti che prenderanno a mano il nostro codice,
rubando loro tempo per installare tutti i pacchetti necessari al funzionamento dell’applicazione,
dobbiamo creare un file “requirements.txt” (chiamatelo come vi pare)
con elencate tutte le dipendenze necessarie.
Per fare questo, finito lo sviluppo dell’applicazione, tramite il tool “pip”:

(venv) $ pip freeze >requirements.txt

Se andiamo ad analizzarlo troveremo:

Flask==0.10.1
itsdangerous==0.24
Jinja2==2.7.3
MarkupSafe==0.23
Werkzeug==0.10.4
wheel==0.24.0

Quando un utente prenderà a mano la nostra applicazione e troverà il file requirements,
dovrà solamente installare le dipendenze all’interno del suo venv (per non intaccare
l’interprete di sistema) con:

(venv) $ pip install -r requirements.txt

e sarà allineato.

Abbiamo detto come attivare virtualenv, ma non come disattivarlo:

(venv) C:\fantamanager>deactivate
C:\fantamanager>

Il prossimo passo sarà quello di suddividere l’applicazione in più file;
purtroppo su molti testi, gli esempi fanno sempre riferimento a singoli file
che all’interno contengono impostazioni, view, models, diventando di difficile
gestione, aumentando di complessità.

articoli successivi:
Flask (parte 2): struttura progetto complesso

Categorie:flask, python Tag: ,
I commenti sono chiusi.