9 beste Python-rammeverk for å bygge små til bedriftsapplikasjoner

Python er både en morsom leke og en skremmende flammekaster. Det samme gjelder hva du kan gjøre med Python.

Python er elsket av både hobbyister, forskere og arkitekter.

Det er forbannet enkelt å komme i gang med, har høyere ordens abstraksjoner og metaprogrammeringsevner for å bygge store og komplekse systemer, og har massevis av biblioteker for å gjøre stort sett hva som helst. Jada, det er begrensninger når det gjelder samtidighet og sterk skriving, men du kan omgå dem.

I denne artikkelen skal vi kaste en titt på noen av de beste Python-rammeverkene når det gjelder å bygge store og små nettapplikasjoner.

Django

De Django rammeverket har motstått tidens tann, go-to-nettverket for Python-fellesskapet. Hvis du angrep en Python-utvikler i søvne og tvang dem til å bygge en nettapplikasjon med våpen, ville de automatisk strekke seg etter Django slik en Rubyist vil nå Rails.

Og det er en god grunn til det. Django er, som slagordet sier, «et nettrammeverk for perfeksjonister med tidsfrister.» Det er det som kalles et «batterier inkludert»-rammeverk (omtrent som hvordan Python er et batteri-inkludert språk), som gir all vanlig funksjonalitet ut av esken.

Med disse funksjonene innebygd, kutter Django massivt ned på utviklingstiden:

  • En hendig og hyggelig ORM, med migreringer opprettet og brukt automatisk av rammeverket.
  • Stillas for automatisk generering av adminpanel basert på modellene dine.
  • Støtte for informasjonskapsler, økter, mellomvare, maler, etc.
  • Sikkerhetsfunksjoner som XSS-forebygging, CRSF-forebygging, etc., brukes automatisk.
  • Fungerer med praktisk talt alle databaser der ute (det er enkelt å finne adaptere der offisiell støtte ikke finnes)
  • Førsteklasses støtte for geografiske data og romlige spørringer GeoDjango

Og mye, mye mer. Det er nok å si at Django er et fullverdig, vennlig nettrammeverk.

Er Django noe for deg?

Absolutt ja.

Django gir utmerket mening for alle brukstilfeller, enten det er rask prototyping eller planlegging av en bedriftsapplikasjon. Den eneste grove kanten du kommer over er rammeverkets struktur. Siden Django bøyer seg bakover for å gjøre utviklingen rask og enkel for deg, påtvinger den utvikleren sin struktur (et konsept kalt «konvensjon over konfigurasjon»), noe du kanskje ikke er enig i. For eksempel, hvis du vil erstatte Django ORM med noe annet (for eksempel SQL Alchemy), vær forberedt på overraskelser.

Interessert i å bli fullstack-utvikler med Django og Python? – Sjekk dette fantastisk nettkurs.

Kolbe

Mens Django tar opp nesten all mindshare i Python-nettutvikling, Kolbe er en sterk utfordrer.

I motsetning til Django, er Flask et «mikro-rammeverk», noe som betyr at det fokuserer på å få noen få ting riktig, og overlater resten til deg. Denne «resten er opp til deg» kan være en kilde til frustrasjon eller glede, avhengig av hvilke mål du har. For de som vet hva de gjør og ønsker å lage sine nettapplikasjoner kjærlig ved å velge komponenter etter eget valg, er Flask en gave.

Flask tilbyr følgende funksjoner:

  • Ruting, maler, øktadministrasjon og andre nyttige funksjoner.
  • Full støtte for enhetstesting
  • En minimal, pluggbar arkitektur
  • Førsteklasses REST-støtte
  • Støtte for Blueprints, Flasks unike versjon av arkitektur for små nettapplikasjoner
  • Velg pakkene dine for ORM, migreringer osv.
  • Fleksibel applikasjonsstruktur – plasser filene dine der de gir best mening for deg
  • Statisk filvisning
  • WGSI-kompatibel

Er Flask noe for deg?

Som allerede sagt, er Flask et minimalt nettrammeverk, med alt delt opp i individuelle komponenter som du kan bytte ut. Hvis du har det travelt med å bygge en prototype, vil du bruke mye tid på å ta trivielle avgjørelser på databasen, mappestrukturen, ruting osv., som kan vise seg å virke mot sin hensikt. Flask fungerer best når du er i gang med et stabilt, seriøst prosjekt av middels til stor skala, spesielt REST APIer.

  Unngå disse 9 tingene i CV-en din for utviklings- eller sysadminjobb

Flaske

Hvis du trodde Flasks tilnærming ikke var minimal nok og at du fortsatt vil ha mer kontroll, si hei til Flaske.

Flaske strimler ut enda mer, til det punktet hvor den eneste avhengigheten er Python-standardbiblioteket. Dette betyr at ingen pip-installere dette eller pip-installere det, selv om du mest sannsynlig trenger det om ikke lenge. Her er grunnen til at Bottle skiller seg ut for noen mennesker:

  • Enkeltfildistribusjon. Ja, hele programmet ditt ligger i én enkelt «.py»-fil.
  • Ingen eksterne avhengigheter. Hvis du har den riktige Python-versjonen installert, er du i gang.
  • Leverer malmotoren, som kan byttes ut med Jinja2, Mako eller Cheetah.
  • Støtte for skjemaer, overskrifter, informasjonskapsler og filopplastinger.
  • Innebygd webserver, som enkelt kan byttes ut.

Er Bottle noe for deg?

Hvis du lager en veldig liten app (f.eks. mindre enn 500 linjer med kode) uten spesielle krav, kan Bottle være veldig fornuftig for deg. Det er en fullstendig no-nonsense tilnærming til å lage nettapper, men i praksis vil du oppdage at du blir mer hindret enn hjulpet av Bottle. Årsaken er at den virkelige verden alltid er i endring og før du vet ordet av det. Nye krav vil bli sluppet på hodet ditt. På det tidspunktet ville det å legge alt i en enkelt fil bli et ork.

Dessuten, hvis du tror Bottle og Flask er nesten like, har du rett. Forslag av sammenslåing de to dateres tilbake til 2012, og selv Armin, skaperen av Flask, er enig i det. Marcel, skaperen av Bottle, opprettholder imidlertid et strengt ideologisk skille på grunn av enkeltfil-tilnærmingen og insisterer på at de to forblir atskilt.

Zope

Zope er komplisert å forklare, men jeg skal prøve. Ja, det er et nettrammeverk som kan brukes til å bygge store eller små applikasjoner, men det er ikke alt. Zope er mer en plattform som består av verktøy (nettrammeverk inkludert) opprettet under Zope-filosofien og vedlikeholdt av Zope Corporation.

Zope har flere interessante komponenter og funksjoner som er egnet for utvikling av bedriftsapplikasjoner:

  • En komponentregistrerings- og oppdagelsesarkitektur for å konfigurere en stor app.
  • ZODB — (den eneste) objektdatabasen for Python for lagring av objekter naturlig.
  • Fullverdig rammeverk og standarder for innholdsstyringssystemer
  • Et sett med nettapplikasjonsrammeverk – det kanoniske kalles fortsatt Zope, selv om flere nye rammeverk (som Grok) er bygget på toppen av det.
  • Sterke standarder for programvareutvikling, utgivelse og vedlikehold.

Er Zope noe for deg?

Hvis du er ute etter et svært strukturert miljø for å bygge virkelig store apper, er Zope bra. Når det er sagt, vil du også støte på en god del av problemene. Mens Zope fortsetter å utvikle seg, er fellesskapet veldig lite, i den grad at mange Python-utviklere ikke engang har hørt om det. Det er vanskelig å finne veiledninger og omfattende dokumentasjon, så vær forberedt på å grave mye rundt (selv om fellesskapet er veldig nyttig!). Dessuten vil Python-utviklerne du møter kanskje ikke lære Zope og «fortynne» ferdighetssettet deres.

TurboGears

TurboGears er et svært fleksibelt rammeverk som har en genuint komponerbar arkitektur. Det er et rammeverk som skaleres i henhold til dine behov, og du kan bruke det til å bygge en enkeltfil-applikasjon eller en multi-tenancy-behemoth.

  Hvordan Storbritannias nye "pornoblokk" på Internett vil fungere

TurboGears har noen elegante funksjoner, hvorav noen enten ikke er til stede i populære rammeverk (som Django) eller er vanskelige å bygge:

  • Førsteklasses støtte for flere databaser
  • Multi-database transaksjoner
  • Svært modulært – start med én enkelt fil og skaler ut så mye du trenger
  • En kraftig ORM (SQLAlchemy, som er mer moden og dyktig enn Djangos ORM)
  • Pluggbar arkitektur basert på WSGI-spesifikasjonen
  • Innebygd støtte for databasedeling
  • Et funksjonsdrevet grensesnitt i motsetning til dype, stive objektorienterte hierarkier.

Er TurboGears noe for deg?

Hvis du ønsker å utvikle deg lykkelig og vil ha et testet, modent og robust rammeverk vekk fra mediestøyen fra «fantastisk, neste generasjons» og alt det der, passer TurboGears perfekt. Den er høyt respektert i samfunnet og har fullstendig, omfattende dokumentasjon. Visst, TurboGears er ikke selvstendig, noe som betyr at innledende oppsett og konfigurasjonstiden kan være lengre, men det er det ideelle rammeverket for utvikling av bedriftsapplikasjoner.

Web2py

Web2py startet som et hobbyprosjekt og ble utgitt i 2007. Målet er å gjøre nettutvikling enkel og tilgjengelig for alle.

Som et resultat tar Web2py nullavhengighetstilnærmingen til det ekstreme – den har ingen krav, ingenting å installere, og inkluderer en fullfunksjons nettbasert editor for utvikling, databaseadministrasjon, så vel som distribusjon.

Du kan nesten tenke på det som Android Studio, som er mer et komplett miljø enn bare et rammeverk. Noen fine funksjoner som Web2py har, er:

  • Praktisk talt ingen læringskurve.
  • Minimal kjerne (kun 12 objekter), som til og med kan memoreres!
  • Pure-Python-mal
  • Beskyttelse mot XSS, CSRF og andre angrep
  • Et hyggelig og konsistent API

Er Web2py noe for deg?

Web2py er et stabilt og morsomt rammeverk, men det er vanskelig å anbefale det mot andre alternativer som Django, Flask, etc. Det er knapt noen jobber, og historien om enhetstesting er ikke bra. Når det er sagt, kan du ha glede av kode-API-en og den generelle opplevelsen rammeverket tilbyr, spesielt hvis du bygger REST-APIer.

CherryPy

CherryPy er et annet mikrorammeverk som har som mål å gi grunnleggende rammeverkfunksjonalitet og raskt komme ut av veien.

Selv om det er sammenlignbart med andre mikrorammer som Flask, kan CherryPy skryte av en viss utmerkelse:

  • Den inneholder en innebygd flertrådsserver (noe som forblir på ønskelisten til Flask)
  • (enkelt) webserveren kan være vert for flere applikasjoner!
  • Server applikasjonen din som en WSGI-app (for grensesnitt med andre WSGI-apper) eller en vanlig HTTP-server (som gir bedre resultater)
  • Førsteklasses støtte for profilering og enhetstesting
  • Kjører på PyPy (for de sanne ytelsesjunkiene), Jython og til og med Android

CherryPy gjør alt dette, og deretter det vanlige du forventer av et nettrammeverk.

Er CherryPy noe for deg?

Hvis du for det meste bygger RESTful-tjenester, er CherryPy en mye mer seriøs utfordrer enn Flask. Det er et tiår gammelt rammeverk som har modnet godt og passer både for små og store applikasjoner.

Sanic

Fremveksten av Node og dens asynkrone programmeringsmodell etterlot mange samfunn bak, inkludert Pythons. Som svar har en mengde asynkrone nettrammeverk dukket opp på radaren, Sanic å være en av dem.

Sanic er sterkt inspirert av Flask, i den grad den lånte rutedekoratørene, Blueprints og andre grunnleggende krokline og søkke. Og de skammer seg ikke over å innrømme det. Det Sanic bringer til bordet, hvis du er en Flask-fan, er ekte ikke-blokkerende I/O for å møte ytelsesnivåene til en Node-applikasjon. Med andre ord, Sanic er Flask med asynkron/avvent-støtte!

  Hvordan flytte bilder i Microsoft Word

Sammenlignet med CherryPy har Sanic en utrolig ytelsesfordel (bare tenk på hvordan det ville klare seg mot Flask!). Sjekk ut følgende resultater testet av DataWeave:

Som du kan se, når samtidige tallene begynner å overstige 50 per sekund, kveler CherryPy praktisk talt og gir en høy feilrate.

Er Sanic noe for deg?

Selv om ytelsesegenskapene til Sanic blåser alt annet ut av vannet, er det kanskje ikke det beste valget for ditt neste prosjekt. Hovedårsaken er mangelen på asynkrone biblioteker. Hovedtyngden av eksisterende Python-verktøy og -biblioteker ble skrevet for den entrådede CPython-versjonen, uten omtanke for høy samtidighet eller asynkrone operasjoner. Hvis for eksempel din favoritt-ORM ikke støtter asynkrone operasjoner, blir hele poenget med å bruke Sanic beseiret.

På grunn av disse årsakene til modenhet og tilgjengelighet, vil vi ikke undersøke flere asynkrone rammer i Python.

Masonitt

Jeg kom over dette rammeverket for en stund siden og trodde det var et skritt i riktig retning. Siden den gang har versjon 2.0 blitt sluppet, og jeg føler at tiden endelig er inne for å gi Masonitt litt kjærlighet.

Enkelt sagt, Masonite er Python-versjonen av Laravel (et kjent PHP-rammeverk, i tilfelle du ikke visste det). Hvorfor betyr det noe? Det betyr noe fordi Laravel ble bygget på prinsippene til Ruby on Rails, og sammen lar disse to rammeverkene ikke-Ruby utviklere oppleve «Rails Way» for å gjøre ting.

Laravel (og til en viss grad Rails) utviklere vil føle seg hjemme og vil være i gang på bokstavelig talt kort tid. Da jeg prøvde Masonite (og jeg sendte inn et problem eller to, inkludert en feil!), var jeg i stand til å bygge REST API-er med nøyaktig null tenkning fordi Laravel-muskelminnet mitt gjorde alt.

Som et batteri-inkludert rammeverk i full stack, bringer Masonite flere interessante ting til bordet:

  • Aktiv-rekord stil ORM
  • Databasemigrering (som, i motsetning til Django, må opprettes av utvikleren)
  • En kraftig IoC-beholder for avhengighetsinjeksjon
  • Egen CLI (kalt «craft») for stillas- og løpeoppgaver
  • Førsteklasses støtte for enhetstesting

Den største «rivalen» for Masonite er Django, ettersom fellesskapet gjør sitt beste for å markedsføre rammeverket som enkelt, herlig og det neste store. Om den vil overgå Django er noe tiden vil vise (spør du meg, har den en anstendig sjanse), men for en diskusjon som sammenligner de to, se her og her.

Er Masonite noe for deg?

Masonite er fortsatt en baby sammenlignet med Django, så det er ingen måte det kan anbefales fremfor Django. Når det er sagt, hvis du er interessert i Rails-måten (eller Laravel-måten) å gjøre ting på, vil du sette pris på hva Masonite har å tilby. Den er ideell for raskt å bygge prototyper som trenger alt forhåndskonfigurert og enkelt å bytte.

Konklusjon

Det er ingen mangel på Python-rammeverk der ute, store og små. Mens du kan plukke opp stort sett hva som helst for et lite prosjekt, har en bedriftsapplikasjon krav som ikke mange av disse rammene kan oppfylle. Hvis du spør meg, for bedriftsutvikling, er Django (til en viss grad), Zope og TurboGears det du tenker på. Og selv blant dem er jeg tilbøyelig til TurboGears.

Når det er sagt, kan enhver arkitekt som er verdt saltet hans plukke opp et mikrorammeverk og rulle ut arkitekturen deres. Og dette er stort sett det som skjer i praksis, noe som forklarer suksessen til Flask og lignende ideer.

Hvis du er en nybegynner, da dette nettkurset ville være nyttig å lære Python.

Utforsk deretter noen av de spesialiserte Python-rammeverkene for å bygge APIer.