9 migliori framework Python per la creazione di applicazioni da piccole a aziendali

Python è sia un giocattolo divertente che uno spaventoso lanciafiamme. Lo stesso vale per quello che puoi fare con Python.

Python è amato da hobbisti, scienziati e architetti allo stesso modo.

È dannatamente facile iniziare, ha astrazioni di ordine superiore e capacità di metaprogrammazione per costruire sistemi grandi e complessi e ha un sacco di librerie per fare praticamente qualsiasi cosa. Certo, ci sono dei limiti quando si tratta di concorrenza e tipizzazione forte, ma puoi aggirarli.

In questo articolo, daremo uno sguardo ad alcuni dei migliori framework Python quando si tratta di creare applicazioni web grandi e piccole.

Django

Il Django framework ha resistito alla prova del tempo il framework web di riferimento per la comunità Python. Se aggredisci uno sviluppatore Python nel sonno e lo costringi a creare un’applicazione web sotto la minaccia delle armi, raggiungerà automaticamente Django nel modo in cui un Rubyist raggiungerà Rails.

E c’è una buona ragione per questo. Django è, come dice lo slogan, “un framework web per perfezionisti con scadenze”. È quello che viene chiamato un framework “batterie incluse” (proprio come Python è un linguaggio con batterie incluse), che fornisce tutte le funzionalità comuni pronte all’uso.

Con queste funzionalità integrate, Django riduce notevolmente i tempi di sviluppo:

  • Un ORM pratico e piacevole, con migrazioni create e applicate automaticamente dal framework.
  • Scaffolding per la generazione automatica del pannello di amministrazione in base ai tuoi modelli.
  • Supporto per cookie, sessioni, middleware, modelli, ecc.
  • Le funzionalità di sicurezza come la prevenzione XSS, la prevenzione CRSF e così via vengono applicate automaticamente.
  • Funziona praticamente con tutti i database disponibili (è facile trovare adattatori in cui non esiste il supporto ufficiale)
  • Supporto di prima classe per i dati geografici e le query spaziali GeoDjango

E molto, molto altro. Basti dire che Django è un framework web completo e amichevole.

Django fa per te?

Assolutamente si.

Django ha perfettamente senso per tutti i casi d’uso, che si tratti di prototipazione rapida o pianificazione di un’applicazione aziendale. L’unico spigolo che incontrerai è la struttura del framework. Poiché Django si fa in quattro per rendere lo sviluppo facile e veloce per te, impone la sua struttura (un concetto chiamato “convenzione sulla configurazione”) allo sviluppatore, con cui potresti non essere d’accordo. Ad esempio, se vuoi sostituire Django ORM con qualcos’altro (ad esempio, SQL Alchemy), preparati a sorprese.

Interessato a diventare uno sviluppatore full-stack con Django e Python? – Controlla questo fantastico corso online.

Borraccia

Mentre Django occupa quasi tutta la condivisione mentale nello sviluppo web di Python, Borraccia è un forte contendente.

A differenza di Django, Flask è un “micro-framework”, il che significa che si concentra sull’ottenere alcune cose minime e giuste e lascia il resto a te. Questo “il resto dipende da te” può essere fonte di frustrazione o gioia, a seconda di quali sono i tuoi obiettivi. Per coloro che sanno cosa stanno facendo e vogliono creare amorevolmente le loro applicazioni web scegliendo componenti di loro scelta, Flask è una manna dal cielo.

Flask offre le seguenti caratteristiche:

  • Instradamento, creazione di modelli, gestione delle sessioni e altre funzioni utili.
  • Pieno supporto per i test unitari
  • Un’architettura minimale e collegabile
  • Supporto REST di prima classe
  • Supporto per Blueprints, l’architettura unica di Flask per piccole applicazioni web
  • Scegli i tuoi pacchetti per ORM, migrazioni, ecc.
  • Struttura flessibile dell’applicazione: posiziona i tuoi file dove hanno più senso per te
  • Servizio di file statico
  • Conforme a WGSI

Flask fa per te?

Come già detto, Flask è un framework web minimo, con tutto suddiviso in singoli componenti che puoi scambiare. Se hai fretta di costruire un prototipo, passerai molto tempo a prendere decisioni banali sul database, sulla struttura delle cartelle, sul routing, ecc., che possono rivelarsi controproducenti. Flask funziona meglio quando sei impegnato in un progetto stabile e serio di media e grande scala, in particolare API REST.

Bottiglia

Se pensavi che l’approccio di Flask non fosse abbastanza minimale e che vorresti comunque un maggiore controllo, salutalo Bottiglia.

Bottle si spoglia ancora di più, al punto in cui l’unica dipendenza è la libreria standard di Python. Ciò significa che nessun pip installa questo o pip installa quello, anche se molto probabilmente ne avrai bisogno tra non molto. Ecco perché Bottle si distingue per alcune persone:

  • Distribuzione a file singolo. Sì, l’intera applicazione risiede in un singolo file “.py”.
  • Nessuna dipendenza esterna. Se hai installato la versione corretta di Python, sei a posto.
  • Fornisce il suo motore di template, che può essere sostituito con Jinja2, Mako o Cheetah.
  • Supporto per moduli, intestazioni, cookie e caricamenti di file.
  • Web server integrato, che può essere facilmente sostituito.

La bottiglia fa per te?

Se stai creando un’app davvero piccola (diciamo meno di 500 righe di codice) senza requisiti speciali, Bottle potrebbe avere molto senso per te. È un approccio completo e senza fronzoli alla creazione di app Web, ma in pratica scoprirai di essere più ostacolato che aiutato da Bottle. Il motivo è che il mondo reale cambia sempre e prima che tu te ne accorga. Nuovi requisiti ti cadranno in testa. A quel punto, mettere tutto in un unico file diventerebbe un lavoro ingrato.

Inoltre, se pensi che Bottle e Flask siano quasi simili, hai ragione. Proposte di fusione i due risalgono al 2012, e anche Armin, il creatore di Flask, è d’accordo. Tuttavia, Marcel, il creatore di Bottle, mantiene una rigida distinzione ideologica a causa dell’approccio in fila indiana e insiste affinché i due rimangano separati.

Zopo

Zopo è complicato da spiegare, ma ci proverò. Sì, è un framework web che può essere utilizzato per creare applicazioni grandi o piccole, ma non è tutto. Zope è più una piattaforma che consiste in strumenti (inclusi i framework web) creati secondo la filosofia Zope e mantenuti dalla Zope Corporation.

Zope ha diversi componenti e funzionalità interessanti adatti allo sviluppo di applicazioni aziendali:

  • Un’architettura di registrazione e individuazione dei componenti per configurare un’app di grandi dimensioni.
  • ZODB — (l’unico) database di oggetti per Python per l’archiviazione nativa di oggetti.
  • Framework e standard completi per i sistemi di gestione dei contenuti
  • Un insieme di framework per applicazioni web — quello canonico è ancora chiamato Zope, anche se diversi nuovi framework (come Grok) sono stati costruiti su di esso.
  • Standard rigorosi per lo sviluppo, il rilascio e la manutenzione del software.

Zope fa per te?

Se stai cercando un ambiente altamente strutturato per creare app davvero grandi, Zope va bene. Detto questo, incontrerai anche la tua giusta dose di problemi. Mentre Zope continua ad evolversi, la comunità è davvero piccola, al punto che molti sviluppatori Python non ne hanno nemmeno sentito parlare. Trovare tutorial e documentazione estesa è difficile, quindi preparati a scavare molto in giro (anche se la community è davvero utile!). Inoltre, gli sviluppatori Python che incontri potrebbero non voler imparare Zope e “diluire” il loro set di abilità.

TurboGears

TurboGears è un framework altamente flessibile che ha un’architettura veramente componibile. È un framework che si ridimensiona in base alle tue esigenze e puoi usarlo per creare un’applicazione a file singolo o un colosso multi-tenancy.

TurboGears ha alcune caratteristiche eleganti, alcune delle quali non sono presenti in framework popolari (come Django) o sono difficili da costruire:

  • Supporto di prima classe per più database
  • Transazioni multi-database
  • Altamente modulare: inizia con un singolo file e ridimensiona quanto ti serve
  • Un potente ORM (SQLAlchemy, che è più maturo e capace dell’ORM di Django)
  • Architettura pluggable basata sulla specifica WSGI
  • Supporto integrato per il partizionamento del database
  • Un’interfaccia basata sulle funzioni in contrapposizione a profonde e rigide gerarchie orientate agli oggetti.

TurboGears fa per te?

Se vuoi sviluppare felicemente e desideri un framework testato, maturo e robusto lontano dal rumore dei media di “fantastico, di nuova generazione” e tutto il resto, TurboGears è perfetto. È molto rispettato nella comunità e ha una documentazione completa ed estesa. Certo, TurboGears non è supponente, il che significa che il tempo di installazione e configurazione iniziale può essere maggiore, ma è il framework ideale per lo sviluppo di applicazioni aziendali.

Web2py

Web2py è iniziato come un progetto per hobby ed è stato rilasciato nel 2007. I suoi obiettivi sono rendere lo sviluppo web facile e accessibile a tutti.

Di conseguenza, Web2py porta all’estremo l’approccio a dipendenza zero: non ha requisiti, nulla da installare e include un editor basato sul Web completo per lo sviluppo, la gestione del database e l’implementazione.

Puoi quasi pensarlo come Android Studio, che è più un ambiente completo che un semplice framework. Alcune caratteristiche interessanti di Web2py sono:

  • Praticamente nessuna curva di apprendimento.
  • Nucleo minimo (solo 12 oggetti), che può anche essere memorizzato!
  • Modelli Pure-Python
  • Protezione contro XSS, CSRF e altri attacchi
  • Un’API piacevole e coerente

Web2py fa per te?

Web2py è un framework stabile e divertente, ma è difficile consigliarlo rispetto ad altre opzioni come Django, Flask, ecc. Non ci sono quasi lavori e la storia dei test unitari non è eccezionale. Detto questo, potresti apprezzare l’API del codice e l’esperienza complessiva offerta dal framework, soprattutto se stai creando API REST.

Cherry Py

Cherry Py è un altro microframework che mira a fornire funzionalità di framework di base e togliersi rapidamente di mezzo.

Sebbene sia paragonabile ad altri microframework come Flask, CherryPy vanta una certa distinzione:

  • Contiene un server multi-thread integrato (qualcosa che rimane nella lista dei desideri di Flask)
  • Il (singolo) web server può ospitare più applicazioni!
  • Servi la tua applicazione come un’app WSGI (per interfacciarsi con altre app WSGI) o un semplice server HTTP (che funziona meglio)
  • Supporto di prima classe per la profilazione e il test unitario
  • Funziona su PyPy (per i veri drogati delle prestazioni), Jython e persino Android

CherryPy fa tutto questo, e poi il solito che ti aspetteresti da un framework web.

CherryPy fa per te?

Se stai costruendo principalmente servizi RESTful, CherryPy è un concorrente molto più serio di Flask. È un framework decennale che è maturato bene ed è adatto sia per applicazioni piccole che grandi.

Sanico

L’ascesa di Node e del suo modello di programmazione asincrona ha lasciato indietro molte comunità, incluso Python. In risposta, sul radar è apparsa una raffica di framework web asincroni, Sanico essere uno di loro.

Sanic è fortemente ispirato da Flask, nella misura in cui ha preso in prestito i decoratori di percorso, i progetti e altri fondamentali hook line e sinker. E non si vergognano ad ammetterlo. Ciò che Sanic offre, se sei un fan di Flask, è un vero I/O non bloccante per soddisfare i livelli di prestazioni di un’applicazione Node. In altre parole, Sanic è Flask con supporto async/await!

Rispetto a CherryPy, Sanic ha un incredibile vantaggio in termini di prestazioni (basti pensare a come se la caverebbe contro Flask!). Dai un’occhiata ai seguenti risultati testati da DataWeave:

Come puoi vedere, una volta che i numeri di concorrenza iniziano a superare i 50 al secondo, CherryPy praticamente si blocca e genera un alto tasso di fallimento.

Sanic fa per te?

Mentre le caratteristiche prestazionali di Sanic spazzano via tutto il resto dall’acqua, potrebbe non essere la scelta migliore per il tuo prossimo progetto. Il motivo principale è la mancanza di librerie asincrone. La maggior parte degli strumenti e delle librerie Python esistenti è stata scritta per la versione CPython a thread singolo, senza alcuna previsione per operazioni asincrone o ad alta concorrenza. Se, ad esempio, il tuo ORM preferito non supporta le operazioni asincrone, l’intero punto dell’utilizzo di Sanic viene sconfitto.

A causa di questi motivi di maturità e disponibilità, non esamineremo altri framework asincroni in Python.

Masonite

Mi sono imbattuto in questo framework qualche tempo fa e ho pensato che fosse un passo nella giusta direzione. Da allora è stata rilasciata la versione 2.0 e sento che è finalmente giunto il momento di dare Masonite un po ‘di amore.

In poche parole, Masonite è la versione Python di Laravel (un famoso framework PHP, nel caso non lo sapessi). Perché è importante? È importante perché Laravel è stato costruito sui principi di Ruby on Rails, e insieme questi due framework consentono agli sviluppatori non Ruby di sperimentare il “Rails Way” di fare le cose.

Gli sviluppatori di Laravel (e in una certa misura di Rails) si sentiranno come a casa e saranno operativi in ​​pochissimo tempo. Quando ho provato Masonite (e ho presentato un problema o due, incluso un bug!), Sono stato in grado di creare API REST senza pensare esattamente perché la mia memoria muscolare Laravel stava facendo tutto.

Come framework full-stack con batterie incluse, Masonite porta sul tavolo diverse cose interessanti:

  • ORM in stile record attivo
  • Migrazioni del database (che, a differenza di Django, devono essere create dallo sviluppatore)
  • Un potente contenitore IoC per l’iniezione di dipendenza
  • Propria CLI (chiamata “craft”) per scaffolding e attività di esecuzione
  • Supporto di prima classe per unit test

Il più grande “rivale” per Masonite è Django, poiché la comunità sta facendo del suo meglio per commercializzare il framework come facile, delizioso e la prossima grande novità. Se supererà Django è qualcosa che il tempo dirà (se me lo chiedi, ha uno scatto decente), ma per una discussione che confronta i due, vedi qui e qui.

La masonite fa per te?

Masonite è ancora un bambino rispetto a Django, quindi non c’è modo che possa essere raccomandato su Django. Detto questo, se ti piace il modo Rails (o il modo Laravel) di fare le cose, apprezzerai ciò che Masonite ha da offrire. È ideale per creare rapidamente prototipi che necessitano di tutto preconfigurato e facile da cambiare.

Conclusione

Non mancano i framework Python là fuori, grandi e piccoli. Mentre puoi raccogliere praticamente qualsiasi cosa per un piccolo progetto, un’applicazione aziendale ha esigenze che non molti di questi framework possono soddisfare. Se me lo chiedi, per lo sviluppo aziendale, Django (in una certa misura), Zope e TurboGears sono ciò che mi viene in mente. E anche tra quelli, sono incline a TurboGears.

Detto questo, qualsiasi architetto degno di questo nome può prendere un microframework e implementare la propria architettura. E questo è praticamente ciò che accade in pratica, il che spiega il successo di Flask e idee simili.

Se sei un principiante, allora questo corso online sarebbe utile per imparare Python.

Successivamente, esplora alcuni dei framework Python specializzati per creare API.