Pyramid – Salita o discesa?

Pyramid – Salita o discesa?

AHAHAH! Si inizia!

Con django non mi sono trovato bene; strutturare un sito ad applicazioni non l’ho trovato agevole e integrare altre applicazioni è stato fallimentare. Infine l’interfaccia di amministrazione creata automaticamente si è rivelata una infinita perdita di tempo poiché non proprio semplice da personalizzare.

E quindi ora ci si riprova, dopo tre giorni (circa :P) passati a scegliere, con un nuovo framework.


Si chiama Pyramid, è scritto in python basato su pylons e con molte eredità e dipendenze da Zope. Le alternative erano principalmente django, turbogears, pyramid e RoR. Poiché da django stavo cercando di uscirne e non ho molta intenzione di imparare un altro linguaggio, le opzioni si sono ridotte in fretta tra turbogears e pyramid. Ho scelto pyramid poiché è piccolo, piccolo, piccolissimo; permette di scegliere senza fatica ogni cosa, dal motore di rendering per i template, all’interfaccia db, ai plugin; che, praticamente, non esistono in quanto qualsiasi cosa scritta in python va bene.

La differenza con django? Abbastanza semplice, con pyramid è possibile avere una applicazione funzionante con un solo file contenente una decina di righe di codice. Visto che non esistono applicazioni pronte (plugin, cms, robistrani) che mi possano realmente semplificare la vita ho preferito avere un framework il più semplice e aperto possibile.

Speriamo sia la scelta giusta.

Come setup di sviluppo sto seguendo il tutorial della complicata e caotica documentazione di pyramid.
Prevede l’installazione di pyramid in un virtualenv python, molto semplice:

$ virtualenv --no-site-packages env
$ cd env
$ source bin/activate
$ easy_install pyramid
$ easy_install docutils nose coverage zope.sqlalchemy \
SQLAlchemy pyramid_tm pyramid_debugtoolbar

Virtualenv crea un ambiente python autonomo, con la sua cartella di librerie e di file binari. Con easy_install contenuto nella cartella bin creata da virtualenv si installa pyramid e tutti i moduli necessari. I moduli sono per adesso pochi, servono per creare la documentazione (docutils) per i test (nose, coverage), il debug (pyramid_debugtoolbar) e SQLAlchemy.

Per creare il progetto, pyramid mette a disposizione dei template: starter, zodb e alchemy. I template creano i file necessari per la persistenza (zodb o sqlalchemy) e l’url mapping (traversal o URL Dispatch). Il primo template (starter) prepara il necessario per usare URL Dispatch, zodb crea un progetto che utilizza traversal e zodb e l’ultimo, alchemy, mette a disposizione URL dispatch e SQLAlchemy.
Niente vieta di creare la struttura directory autonomamente e di inserire i vari file a mano, nonché di cambiare in corso d’opera, o di mescolare, i vari meccanismi, nonché di aggiungerne altri.
Tutti e tre i template utilizzano Chameleon come template engine per visualizzare le pagine.

$ pcreate -s alchemy progetto

Questo crea tutti i file e le cartelle necessarie allo sviluppo e all’esecuzione del progetto. A questo punto non resta che installarlo, sistemare il file development.ini ed eseguire il tutto.
Il file development.ini contiene configurazioni, tra cui quelle di sqlalchemy, che per ora non modificherò.
Pyramid include un miniwebserver, ottimo per sviluppo e debug.

$ cd progetto
$ python setup.py develop
$ populate_progetto development.ini
$ pserve development.ini --reload

setup.py develop installa il nostro progetto e lo rende eseguibile, è importante che usiate il python del virtualenv creato o qualcosa, prima o poi, andrà storto.
populate_progetto development.ini è un comando di sqlalchemy che stabilisce la connessione con il db. Se non sono state fatte modifiche a development.ini, il db usato è sqlite.
L’ultimo comando, infine, avvia il webserver su localhost:6543; andateci e vedrete il vostro progetto.

Leave a Reply