Back to Posts

Usare VirtualENV in Python

Posted in datascience

Storie un po’ noob

Di recente ho avuto la possibilità di smanettare sul server di un’associazione di cui faccio orgogliosamente parte, che si chiama Ondata, e che conta tante belle facce. Per giocarci un po’ ho conosciuto VirtualEnvironments.

Il server è stato messo su dagli hacker quelli seri, che sanno dove mettere le mani, io ho chiesto loro una home sul server con “gli stessi permessi che ha un bambino di quattro anni sui codici nucleari”. Noob & Root devono condividere solo la doppia o.

Ho cominciato a curiosare un po’ con un piccolo scraper, che semplicemente fa una richiesta GET a un sito, e una POST su un altro. Dovevo installare due librerie python per far girare questo scraper, Requests e BeautifulSoup. Il problema è quindi evitare di dover chiamare il sysadmin a installarmi ogni libreria, allo stesso tempo evitando di avere gli accessi root.

VirtualEnvironments crea fondamentalmente un ambiente virtuale di sviluppo Python, con un solo comando (Pythonic, huh?):

	$ virtualenv ENV

Dove ENV è il nome della cartella da creare o già esistente (che viene resa virtual environment con la propria versione di Python).

Di default dentro la cartella avrete quindi una ENV/bin con la versione di Python e PIP ‘locale’. E il fatto interessante è che è isolata da qualsiasi altra versione. Basta semplicemente usare il Python o Pip di questo ambiente per installare le librerie, quindi:

	$ home/ENV/bin/pip install requests
	$ home/ENV/bin/pip install bs4

e semplicemente:

	$ /home/ENV/bin/python /path/programma.py

invece del normale:

	$ python /path/programma.py

che nei sistemi linux sarebbe:

	$ /usr/bin/python /path/programma.py

Credo sia un sistema estremamente comodo e intelligente per più motivi:

  • Risolve la mia niubba pericolosità, lasciandomi comunque liberissimo di installare e cancellare quello che voglio
  • È facile
  • All’aumento della complessità aumenta l’utilità di questo sistema in termini di ordine, risorse, efficienza. Immaginate la fase di sviluppo di un progetto software complesso con diverse dependencies, magari una con librerie Python2.7 e una Python3.5, in cui l’update di una libreria da una parte non mi fa funzionare qualcosa dall’altra

Poi (non essendo uno sviluppatore) sicuramente ci saranno un altro milione di motivi che io non so per cui VirtualENV è un ottimo strumento. Ma per me è già interessante così :)

Vuoi sostenere Ondata?

The internet is the most incredible infrastracture ever built. Human beings learn through dialogues. Open sourcing your ideas means enhancing them. I keep my brain alive reading, writing and coding. Economics student, I'm (slowly) teaching myself Data Science. Hacktivism with www.onData.it folks.

Read Next

Creating non-numeric pivot tables with Python Pandas

ActionAid

fights for food, women, a right governance

GET INVOLVED