Gli sviluppatori Python possono attingere dal Python Package Index (PyPI) ad una vasta quantità di moduli aggiuntivi non inclusi nella distribuzione standard (al momento in cui scrivo PyPI ne conta 12874). Per gestire tali pacchetti è conveniente usare il programma pip che consente, tra le altre cose, di installare i moduli del PyPI con una semplice linea di comando.

Innanzitutto bisogna installare pip:

Ubuntu

sudo aptitude install python-pip

Fedora

su -c 'yum install python-pip'

Altrove

easy_install pip

Tra le altre cose, pip funziona ottimamente in combinazione con virtualenv, consentendo così di installare tutti i moduli desiderati su un ambiente replicato senza toccare l’installazione principale di Python.

Vediamo ora un esempio dell’uso di pip. Supponiamo di essere degli anglosassoni superstiziosi e di voler assolutamente sapere quale sarà il prossimo venerdì 13: potremmo metterci a sfogliare il calendario o, più fruttuosamente, il Python Package Index. All’interno di quest’ultimo infatti c’è il modulo FridayThe13th che fa proprio al caso nostro, quindi installiamolo!

(ToastedTech)[rnd@turing ~]$ pip install FridayThe13th
Downloading/unpacking FridayThe13th
   Downloading FridayThe13th-1.0.0.tar.gz
   Running setup.py egg_info for package FridayThe13th 

Installing collected packages: FridayThe13th
   Running setup.py install for FridayThe13th 

Successfully installed FridayThe13th
Cleaning up...

Funzionerà? Vediamo:

(ToastedTech)[rnd@turing ~]$ python -c 'from FridayThe13th import *; phobia(2012)'
Dates to remember:
2011-05-13

La comodissima funzione phobia, del modulo FridayThe13th, funziona e ci ricorda che dovremo guardare con terrore al prossimo 13 maggio 2011 perché sarà un venerdì 13!

Tra le altre cose, pip è in grado di cercare moduli:

(ToastedTech)[rnd@turing ~]$ pip search twitter
feed2twitter           - Publish your feed items to twitter
twitter                - An API and command-line toolset for Twitter (twitter.com)
mitter                 - Update your Twitter status
django-oauth-twitter   - A Django application that lets you associate Twitter accounts with your User accounts 

[...]

Per ottenere una lista dei moduli installati basta usare il comando freeze di pip:

(ToastedTech)[rnd@turing ~]$ pip freeze
distribute==0.6.14
wsgiref==0.1.2

Salvando l’output di pip freeze in un file di testo (basta una semplice redirezione) è possibile usare quest’ultimo per replicare la lista dei moduli di un’installazione virtuale in un’altra con un singolo comando:

(NUOVO)[rnd@turing ~]$ pip install -r lista_moduli.txt
Downloading/unpacking distribute==0.6.14 (from -r lista_moduli.txt (line 1))

[...]

Successfully installed distribute
Cleaning up...
Requirement already satisfied (use --upgrade to upgrade): wsgiref==0.1.2 in /usr/lib/python2.7 (from -r ../Paperino/a.txt (line 2))

Le caratteristiche di pip sono piuttosto numerose, per approfondimenti consultate la sua home page.