Compilare ed installare PyQt4 su Snow Leopard
Come tutti voi sapete, sono un amante di Python e Qt4. Apprezzo anche abbastanza PyQt4, anche se non mi piace il modo in cui Phil Thompson ne gestisce lo sviluppo: non sopporto il fatto che, pur con ottime motivazioni, venga modificata la API (per esempio del famigerato QVariant) in una minor release e via dicendo.
Inoltre, con l'aggiornamento a Snow Leopard, è sorta tutta un'altra serie di problemi di compatibilità tra Qt, PyQt e il sistema. Ma dato che PyQt è uno degli strumenti che più di tutti utilizzo nel mio lavoro, mi sono trovato nell'esigenza di far funzionare il tutto nel modo migliore possibile.
Ecco quindi una breve guida sull'installazione di Qt4 e PyQt4 su Snow Leopard.
Indiana Duplo e l'ultima toolchain.
Potrebbe sembrare un titolo stupido, ma quello che andrò a raccontarvi è invece un evento realmente accaduto.
Chi tra voi, miei dolci lettori, non ha mai avuto l'esigenza di rimuovere ogni traccia di dato dal proprio sistema, per partire da zero con una nuova installazione? Anche se ho un mac, e anche se con Mac OS X questo non sarebbe assolutamente necessario, ho deciso, per rimuovere tutti i servizi, serviziucci e servizietti che avevo installato, di brasare totalmente l'HD del macbook pro e di reinstallare Snow Leopard da zero.
Ovviamente l'installazione è andata a buon fine. Tutto si è risolto felicemente e vissero tutto felici e contenti, perlomeno fino a ieri sera. Catturato dalla mia vena nerd ho deciso di provare a vedere a che punto era il support per il Qt Animation Framework in PyQt4. Ho scaricato i sorgenti, eseguito un bel configure, ed infine dato un fantastico make! Ma qualcosa è andato storto.
[519][duplo@greenhill: PyQt-mac-gpl-4.7-snapshot-20091223]$ make -bash: make: command not found
COSA? perché make non esiste più? Dopo un breve momento di panico, mi sono ricordato della formattazione dell'HD e della conseguente reinstallazione e il recupero da Time Machine.
Morale della favola: anche se XCode risulta ancora installato, vado sul centro totale di raccolta di strumenti di sviluppo Apple, metto a scaricare l'ultima versione di XCode (nel mio caso ho messo a scaricare anche iPhone SDK) e mi doto di tanta, tanta, tanta, pazienza. Appena finito il download, installo e tutto funziona magicamente. Non lasciatevi ingannare, come me, dal fatto che XCode sembri sempre al suo posto. I tool di sviluppo, le utility a riga di comando e tutti i frameworks non vengono salvati e recuperati da Time Machine!
Nelle mie intenzioni iniziali volevo scrivere un bell'articolo sul livello di maturità del Qt Animation Framework usandolo da PyQt, ma questo, date le difficoltà tecniche, verrà pubblicato in futuro.
Hook per modificare il comportamento delle eccezioni in Python
Che bello. Ogni giorno di più penso che Python sia il linguaggio di programmazione definitivo.
Oggi mi sono trovato nella necessità di tracciare in maniera dettagliata gli errori di un'applicazione Python-PyQt sulla quale sto lavorando. L'idea di fondo era che sarebbe stato infinitamente utile mostrare una message box nella quale si informava l'utente di un malfunzionamento del software, e nel mentre tracciare l'errore in maniera dettagliata su un file, per aiutare le procedure di debug.
Rettifica: PyQt ha il supporto per Python 3.1
In un precedente post avevo affermato che tra i tanti possibili punti a favore di PySide, nei confronti di PyQt era il futuro supporto a Python 3. Ebbene, oggi, per puro caso ho notato che nella pagina di download di PyQt è disponibile la prima release candidate di PyQt per Python 3.1.
Direi che PySide ha perso uno dei punti a suo favore. Certo, però ne rimangono diversi altri...
Confronto PySide - PyQt
Recentemente è stato annunciata la prima release di PySide un set di bindings Python - Qt sviluppato da OpenBossa e sponsorizzato direttamente da Nokia.
Di seguito spiego i numerosi aspetti positivi di questi nuovi bindings, e i motivi per cui al momento non parteciperò attivamente al loro sviluppo e non li utilizzerò nelle mie applicazioni.
Partiamo con ordine. Nokia ha rilasciato il suo N900 il primo internet table Maemo based che funziona come telefono. Maemo è una piattaforma basata su Debian, che oramai ha raggiunto un discreto livello di maturità. Recentemente, successivamente all'acquisizione di Qt da parte di Nokia, è stata annunciata la prossima migrazione a Qt come toolkit di sviluppo, e quindi l'abbandono della piattaforma gnome-gtk che prima caratterizzava questi tablet. Per incentivare gli sviluppatori a produrre software per questo ottimo oggetto Nokia ha deciso di rendere disponibili anche i binding python-qt. Dopo un primo tentativo di accordo con Riverbank Computing (proprietaria del copyright di sip e PyQt) non andato a buon fine, ha deciso di rilasciare dei suoi bindings, sotto licenza LGPL. Ecco quindi come PySide ha avuto origine.