Python: gli strumenti

Le distribuzioni di Python

Esistono diversi interpreti di Python. Quello ufficiale e più famoso è CPython. Esiste poi IronPython che è solo per Windows e Jython, un interprete Python scritto in Java, e altri. La soluzione migliore è usare CPython, l'interprete standard.

Attualmente ci sono due rami del linguaggio Python: la versione 2.x e la versione 3.x, incompatibili fra loro. Oramai conviene installare l'interprete per la versione 3. Sebbene alcune librerie importanti non siano ancora state portate verso Python 3 è comunque questione di pochi mesi.

Anziché scaricare l'interprete nudo e crudo con le librerie standard dal sito ufficiale e successivamente installare a mano tutte le librerie aggiuntive e altri software correlati, come editor ecc..., è molto più semplice installare una cosiddetta "distribuzione" Python. Una distribuzione Python comprende l'interprete con le librerie standard, svariate librerie aggiuntive, degli editor appositi per Python e a volte anche dei gestori di pacchetti per installare delle nuove librerie in maniera automatica. In tabella 1 è riportato un confronto tra le distribuzioni più famose. La distribuzione che raccomando è la versione gratuita di Anaconda della società Continuum Analytics.

Tabella 1. Comparazione distribuzioni Python.
Caratteristica Continuum Analytics Anaconda Active python Enthought Canopy Winpython Pythonxy
Dimensione ?? MB ?? MB ?? MB ?? MB ?? MB
Target ScientificoGeneraleScientificoScientificoScientifico
Gratuita? sì*, Community sì, Express e Academic
Sistemi operativi Win, Mac, Linux Win, Mac, Linux Win, Mac, Linux Solo Win Solo Win
Gestore pacchetti sì, Conda sì, PyPM sì, EPD Package Index sì, WinPython Package Manager no
Editor sì, IDLE e Spydersì, IDLEsì, IDLE e SciTEsì, SciTE e Spydersì, Spyder
Altro Aggiornamenti lentisolo 2.7

L'IDE

Se sviluppate solo applicazioni testuali potete ovviamente scegliere l'IDE che più vi piace, purché abbia ragionevolmente un supporto per il debug. Lo stesso discorso vale se l'interfaccia grafica viene programmata interamente a mano. Potreste usare volendo anche un semplice buon editor di testo ma lo sconsiglio (per esempio Notepad++ con il plugin Python Script). Se invece volete creare l'interfaccia grafica con dei GUI builder, è meglio cercare di trovare uno strumento che si integri in qualche modo con questi ultimi.

Una lista abbastanza completa di IDE per Python la trovate alla pagina wiki ufficiale di Python.

Molti degli IDE per Python sono scritti in python e pertanto necessitano di una versione apposita di Python e delle librerie grafiche in cui sono stati scritti. Questo spesso è abbastanza scomodo. Per questi verranno indicati fra parentesi i requisiti.

Prima di tutto bisogna menzionare l'IDE di default di Python in molte distribuzioni, chiamato IDLE (Python+Tk). Esiste anche un pacchetto di estensioni per renderlo più potente, chiamato IdleX. Un altro IDE che si trova già fornito con le distribuzioni è Spyder (Python+PyQt4).

Se non avete già in mente un IDE preferito, il mio consiglio è di usare IDLE o Spyder per i primi tempi e poi spostarsi su un IDE con più cognizione di causa.

Esistono una moltitudine di IDE, vediamone alcuni. Mi concentrerò solo sui più famosi, multipiattaforma e gratuiti. Li elencherò in ordine di preferenza.

IEP, PyCharm, Wing IDE, Komodo IDE, PTK (richiede wxPython), Eric5 (richiede PyQt4, QScintilla), SPE (richiede wxPython), Eclipse+PyDev,

NOTA: Una cosa che non mi piace di Eric5 è la massa di file .bat che crea all'interno della cartella di Python. Ne basterebbe uno solo come si deve. O meglio ancora in Start/Programmi. Oltretutto quel file .bat lascia aperta la finestra del prompt dei comandi. Vi consiglio di cancellare tutti i file .bat tranne eric5.bat. Ora modificatelo inserendo (senza andare a capo):

@start "Eric5" 
C:\Python31\pythonw.exe C:\Python31\Lib\site-packages\eric5\eric5.py %1 
%2 %3 %4 %5 %6 %7 %8 %9

La chiocciola sopprime l'eco dei comandi, il comando start esegui i programmi in background, sganciandoli dal prompt dei comandi da cui sono stati lanciati che pertanto si chiuderà subito dopo. pythonw non apre la finestra dei comandi di python.

Altri IDE famosi, ma solamente per Windows, sono Visual Studio con l'estensione Python Tools e PyScripter.

Le librerie grafiche e i GUI builder

Esistono diverse librerie grafiche che si possono utilizzare in Python. Quelle di default sono le Tk, sempre presenti in ogni distribuzione Python. Poi ci sono le Qt, le GTK, le wxWidget, le .NET (solo per Windows). Le più versatili e potenti sono senza dubbio le Qt. Per la maggior parte dei programmi comunque sono sufficienti le Tk.

In teoria è possibile programmare l'interfaccia grafica interamente a mano ma questo non è molto comune a parte per cose molto semplici. Si preferisce usare un GUI builder che aiuta a costruire graficamente l'interfaccia e a impostare le proprietà dei vari componenti grafici (widget) in maniera semplice.

Ci sono due GUI builder di buona qualità per le Tk: uno è PAGE che però per funzionare richiede che sia installato un interprete TCL (per esempio ActiveTCL, 26 MB). L'altro è pygubu. Un altro GUI builder è Rapyd-Tk o altri vecchi GUI builder sono VisualPython e tk_happy.

Le librerie grafiche Qt, scritte in C++, si possono usare in Python tramite il pacchetto PyQt (circa 28 MB). Vi ricordo che l'installer di PyQt comprende anche le librerie Qt, senza che le scarichiate dal sito apposito. Oltretutto così facendo avete solo i file necessari per Python senza tutto il resto per il C++. Con le librerie Qt viene fornito un GUI builder apposito chiamato Qt Designer che si può richiamare facilmente da diversi IDE, tra questi Eric5.

Le GTK, scritte in C, si possono usare in Python tramite il pacchetto pyGtk. GUI builder ??

Poi ci sono le wxWidgets, scritte in C++, accessibili in Python tramite il pacchetto wxPython. Il GUI builder più famoso è wxGLADE.

Se vi interessa programmare solo per Windows, potete usare le librerie .NET, accessibili in Python tramite il pacchetto pythonnet oppure direttamente se usate l'interprete IronPython anziché il classico CPython. GUI builder ??