Archive for the ‘python’ Tag

Finalmente il mio ambiente pythonico sul Mac

Ho appena sistemato l’installazione di python sul Mac.

C’erano tre problemini che avevo trascurato da tempo e che alla fine son venuti al pettine:

  • python2.4: avevo ancora un vecchio python installato da un universal installer di un plone3.0.x
  • readline: pdb era inusabile. Il fatto che programmi solo saltuariamente e nei weekend non è una gran scusa..
  • roadrunner non andava.

Un paio di dritte da qualche compare e una ricerchina con l’amichevole google alla fine hanno risolto, anche velocemente il problema.

Prima di tutto ho installato MacPorts. Questa era un’operazione che avevo già fatto appena comprato il Mac e avevo lasciato un po’ di configurazioni a metà. Quindi prima di tutto ho tolto python24 e pil:

sudo port uninstall python24 @2.4.4_1+darwin_8
sudo port install python24
sudo port install python_select
sudo python_select python24
sudo port install py-pil

ho poi montato easy_install:

wget peak.telecommunity.com/dist/ez_setup.py
/opt/local/Library/Frameworks/Python.framework/Versions/
                     Current/bin/python ez_setup.py

quindi ho aggiornato il .bashrc per utilizzare questo python e un’utility basata su readline:

export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/2.4/bin:$PATH
export PYTHONSTARTUP=$HOME/.pythonrc.py

e

#!/usr/bin/env python
import readline,rlcompleter
class irlcompleter(rlcompleter.Completer):
        def complete(self, text, state):
                if text == "":
                        #you could  replace \t to 4 or 8 spaces if you prefer indent via spaces
                        return ['\t',None][state]
                else:
                        return rlcompleter.Completer.complete(self,text,state)
#you could change this line to bind another key instead tab.
readline.parse_and_bind("tab: complete")
readline.set_completer(irlcompleter().complete)

però, sgrunt, avevo dimenticato readline e quindi nulla andava. MacPorts però è venuto velocemente in aiuto.

sudo port install py-readline

ora manca solo virtualenv:

easy_install virtualenv

e tutto funziona. Sono contento.

Candy candy

Una serata passata a navigare su internet. Ti capita di trovare su YouTube il tipo che mette online tutti i cartoni animati della tua infanzia.

E’ a questo punto che scatta la domanda del “committente” che è seduto a fianco a te sul divano: “come faccio per scaricarli tutti, che me li guardo con calma?”.

Beh, in questo caso il cliente va assolutamente assecondato. Come fare diversamente? E il programmatore che c’è in te riaffiora dal letargo di mail e telefonate sotto cui l’hai sepolto.

Metti insieme i pezzi:

Poi i pezzi finali:

  • un talk di govoni al linuxday di un paio d’anni fa: in fondo c’è da ottenere l’url del file.
  • python e BeautifulSoup (si poteva usare lxml, ma non lo conosco bene, il committente ha fretta.. in serata il lavoro va finito)
Candy su YouTube

Candy su YouTube

Un paio d’ore di lavoro, un po’ di analisi del’html che youtube e pwnyoutube generano e via: tutti i filmati di Candy Candy si possono scaricare sul tuo piccì.

Il package python lo trovi su pypi, ma, se vuoi contribuire, il sorgente è su googlecode.

Banale da usare:

tauntaun.local:/home/massimo massimo$ python
>>> from candy.candy import Candy
>>> c = Candy('culttoon2', path='/home/massimo/videos', howmany=250)
>>> c.run()

nella cartella ‘/home/massimo/videos’ ti trovi tutti i filmati.

Ovviamente le cose son più facili se usi linux o mac. Se però non sei passato ad un sistema operativo superiore occorre proprio che ti installi python.