12 Pythona za svaku programsku potrebu

Kada odaberete Python za razvoj softvera, odabirete veliki jezični ekosustav s bogatstvom paketa koji pokrivaju sve vrste programskih potreba. No, osim knjižnica za sve, od razvoja GUI-ja do strojnog učenja, možete birati i između velikog broja Python runtimeova - a neka od tih runtimeova možda će biti prikladnija za vaš slučaj upotrebe koji imate pri ruci od drugih.

Evo kratkog obilaska Python distribucija, od standardne implementacije (CPython) do verzija optimiziranih za brzinu (PyPy), za posebne slučajeve upotrebe (Anaconda, ActivePython), za različita vremena izvođenja jezika (Jython, IronPython), pa čak i za rezanje - eksperimentiranje na rubovima (PyCopy, MesaPy).

CPython

CPython je referentna implementacija Pythona, standardne verzije kakvu traže sve ostale inkarnacije Pythona. CPython je napisan na C, kao što se podrazumijeva pod imenom, a proizvela ga je ista temeljna skupina ljudi odgovorna za sve odluke najviše razine o jeziku Python.

Slučajevi upotrebe CPythona

Budući da je CPython referentna implementacija Pythona, najkonzervativniji je u pogledu svojih optimizacija. Ovo je prema dizajnu. Održavači Pythona žele da CPython bude najšira kompatibilna i standardizirana implementacija Pythona koja je na raspolaganju.

CPython je vaš najbolji izbor kada su kompatibilnost i sukladnost s Python standardima važniji od neobrađenih performansi i ostalih problema. CPython je također koristan za stručnjaka koji želi raditi s Pythonom u njegovoj najvažnijoj inkarnaciji i koji je spreman odreći se određenih pogodnosti. 

Na primjer, s CPythonom morate napraviti malo više dizanja da biste postavili virtualna okruženja. Drugi distros (posebno Anaconda) pružaju više automatizacije oko postavljanja radnog prostora.

Ograničenja CPythona

CPython nema optimizacije izvedbe koje se mogu naći u drugim izdanjima Pythona. Ne postoji izvorni JIT (just-in-time) kompajler, nema ubrzanih matematičkih biblioteka i nema dodataka trećih strana radi izvedbe. To su sve stvari koje možete dodati sami, ali nisu u paketu. Opet, sve je to dizajnirano, kako bi se osigurala maksimalna kompatibilnost i omogućilo da CPython posluži kao referentna implementacija, ali to znači da je za bilo kakve optimizacije izvedbe odgovorno programer.

Nadalje, CPython nudi samo osnovni skup alata za rad s Pythonom. Na primjer, upravitelj paketa pip dobiva i instalira pakete iz Pythonovog izvornog spremišta paketa PyPI. Pip će čak instalirati i prekompajlirane binarne datoteke (putem formata distribucije kotača) ako ih je ponudio programer, ali neće instalirati nikakve ovisnosti koje paketi mogu imati izvan PyPI-a. 

Povezani video: Kako Python olakšava programiranje

Savršen za IT, Python pojednostavljuje mnoge vrste poslova, od automatizacije sustava do rada u najmodernijim poljima poput strojnog učenja.

Anaconda Python

Anaconda, koju je proizvela Anaconda, Inc. (bivša Continuum Analytics), namijenjena je programerima Pythona kojima je potrebna distribucija potpomognuta komercijalnim dobavljačem i s planovima podrške za poduzeća. Glavni slučajevi upotrebe Anaconde Pythona su matematika, statistika, inženjerstvo, analiza podataka, strojno učenje i srodne aplikacije.

Anaconda Python slučajevi upotrebe

Anaconda spaja mnoge najčešće biblioteke koje se koriste u komercijalnim i znanstvenim Pythonovim radovima - SciPy, NumPy, Numba i tako dalje - i mnoge druge čini dostupnim putem prilagođenog sustava spajanja paketa.

Anaconda se izdvaja od ostalih distribucija po tome što integrira sve ove dijelove. Kada se instalira, Anaconda nudi stolnu aplikaciju - Anaconda Navigator - koja čini svaki aspekt Anaconda okruženja dostupnim putem prikladnog grafičkog sučelja. Pronalaženje komponenata, njihovo ažuriranje i rad s njima puno je jednostavnije s Anacondom nego s CPythonom.

Još jedna dobrobit je način na koji Anaconda rukuje komponentama izvan Python ekosustava ako su potrebne za određeni paket. Upravitelj condapaketa, stvoren posebno za Anacondu, upravlja instaliranjem Python paketa i vanjskih softverskih zahtjeva treće strane.

Ograničenja Anaconde Pythona

Budući da Anaconda uključuje toliko korisnih knjižnica, a može instalirati još više sa samo nekoliko pritiskanja tipki, veličina instalacije Anaconde može biti puno veća od CPythona. Osnovna instalacija CPythona pokreće se oko 100 MB; Instalacije Anaconde mogu narasti do gigabajta. To može predstavljati problem u situacijama kada imate ograničenja u resursima.

Jedan od načina za smanjenje Anacondinog otiska je instaliranje Miniconde, uklonjene verzije Anaconde koja uključuje samo apsolutni minimum komada potrebnih za pokretanje i rad. Zatim možete dodati pakete u Minicondu kako god želite, s pažnjom prema tome koliko prostora pojedini komad zauzima.

ActivePython

Poput Anaconde, ActivePython stvara i održava profitna tvrtka - u ovom slučaju ActiveState, koja na tržištu nudi niz jezičnih izvođenja zajedno s višejezičnim Komodo IDE-om.

Slučajevi upotrebe ActivePythona

ActivePython namijenjen je poslovnim korisnicima i znanstvenicima podataka - ljudima koji žele koristiti Python, ali ne žele trošiti puno truda na sastavljanju i upravljanju instalacijom Pythona. ActivePython koristi Pythonov redoviti pipupravitelj paketa, ali također nudi nekoliko stotina uobičajenih knjižnica kao provjerene pakete, zajedno s nekim uobičajenim knjižnicama s nezavisnim ovisnostima, poput Intel Math Kernel Library.

Ograničenja ActivePythona

Postoji jedan potencijalni nedostatak pristupa ActivePythona za rukovanje paketima s vanjskim ovisnostima. Ako želite nadograditi na noviju verziju projekta sa složenim ovisnostima (npr. TensorFlow), morat ćete nadograditi i instalaciju ActivePython. U sredinama u kojima je razvoj obično vezan uz određenu verziju projekta, to je manje pitanje. No, u okruženjima u kojima razvoj nastoji pratiti vrhunske verzije, to bi mogao predstavljati problem.

PyPy

Zamjena za tumač CPython, PyPy koristi pravovremenu (JIT) kompilaciju kako bi ubrzao izvršavanje Python programa. Ovisno o zadatku koji se izvodi, dobici u izvedbi mogu biti dramatični. 

Slučajevi upotrebe PyPy

Česta zamjerka Pythonu, a posebno CPythonu, je brzina. Prema zadanim postavkama Python radi mnogo puta sporije od C, ponekad stotine puta sporije. PyPy JIT kompajlira Python kôd u strojni jezik, pružajući u prosjeku 7,7x brži protok od CPythona. Neki se zadaci izvode čak 50 puta brže. 

Najbolje je to što je programeru potrebno malo ili nimalo napora da otključa te dobitke. Zamijenite CPython za PyPy i većinom ste gotovi.

PyPy ograničenja

PyPy se uvijek najbolje ponašao s "čistim" Python aplikacijama. Python paketi koji se povezuju s C bibliotekama, kao što je NumPy, također nisu uspjeli zbog načina na koji je PyPy oponašao CPythonova izvorna binarna sučelja. Vremenom su se programeri PyPy-a riješili ovog problema i učinili PyPy daleko kompatibilnijim s većinom Python paketa koji ovise o C proširenjima. Ukratko, podrška za C proširenja i dalje je ograničena, ali daleko manje nego što je bila.

Još jedan mogući nedostatak PyPy-a je veličina vremena izvođenja. Osnovno vrijeme izvršavanja CPythona u sustavu Windows, isključujući standardnu ​​knjižnicu, iznosi oko 4 MB, dok je vrijeme izvršavanja PyPy oko 32 MB. Imajte na umu i da PyPy već dugo naglašava 2.x granu Pythona, pa je, na primjer, PyPy za Python 3.x trenutno dostupan za Windows samo u 32-bitnoj beta-test verziji. (PyPy je dostupan u 64-bitnim verzijama za Python 2.x i 3.x za Linux i MacOS.)

Jython

JVM (Java virtualni stroj) služi kao vrijeme izvođenja većine jezika, osim Jave. Dugi popis uključuje Groovy, Scala, Clojure, Kotlin i, da, Python, kroz projekt Jython.

Jython slučajevi upotrebe

Jython kompajlira Python 2.x kôd u JVM bytecode i pokreće rezultirajući program na JVM. U nekim će se slučajevima program kompiliran s Jythonom izvoditi brže od svog kolege CPythona, ali ne uvijek.

Najveća prednost koju Jython pruža je izravna interoperabilnost s ostatkom Java ekosustava. Java se koristi još šire od Pythona. Pokretanje Pythona na JVM-u omogućuje programerima Pythona da iskoriste ogroman ekosustav knjižnica i okvira koje inače ne bi mogli koristiti. Po istom principu, Jython dopušta programerima Jave da koriste Python knjižnice. 

Jythonova ograničenja

Najveći nedostatak Jythona je taj što podržava samo 2.x granu Pythona. Podrška za Python 3.x je u fazi izrade, ali je već neko vrijeme. Do sada ništa nije objavljeno.

Imajte na umu i da dok Jython dovodi Python u JVM, on ne dovodi Python na Android. Budući da trenutno ne postoji priključak Jythona na pravi Android, Jython se ne može koristiti za razvoj Android aplikacija.

IronPython

Baš kao što je Jython implementacija Pythona na JVM-u, IronPython je implementacija Pythona na .Net runtime ili CLR (Common Language Runtime). IronPython koristi DLR (Dynamic Language Runtime) CLR-a kako bi Python programima omogućio pokretanje s istim stupnjem dinamičnosti kao u CPythonu.

Slučajevi upotrebe IronPythona

Poput Jythona, IronPython je most. Velika je upotreba interoperabilnost između Pythona i .Net svemira. Postojeći .Net sklopovi se mogu učitati u programe IronPython pomoću Pythonovog izvornog sintaksa za uvoz i upravljanje objektima. Također je moguće kompajlirati IronPython kôd u sklop i pokrenuti ga kakav jest ili ga pozvati iz drugih jezika. Međutim, imajte na umu da se MSIL-u (Microsoftovom intermedijarnom jeziku) u sklopu ne može izravno pristupiti s drugih .Net jezika jer nije u skladu sa Specifikacijom zajedničkog jezika.

Ograničenja IronPythona

Poput Jythona, IronPython trenutno podržava samo Python 2.x. Međutim, radi se na stvaranju implementacije IronPython 3.x.

WinPython

Kao što i samo ime govori, WinPython je Python distribucija stvorena posebno za korisnike sustava Microsoft Windows. Ranija izdanja CPythona za Windows nisu bila dobro dizajnirana, a korisnicima Windowsa bilo je teško u potpunosti iskoristiti Python ekosustav. CPythonovo izdanje za Windows s vremenom se poboljšalo, ali WinPython i dalje nudi mnoge stvari koje se ne mogu naći u CPythonu.

WinPython slučajevi upotrebe

Glavna atrakcija WinPythona je što je to samostalno izdanje Pythona. Ne mora se instalirati na stroj gdje radi; samo ga treba raspakirati u direktorij. To čini WinPython korisnim u slučajevima kada se softver ne može instalirati na određeni sustav, u scenarijima gdje je potrebno distribuirati unaprijed konfigurirano izvršavanje Pythona zajedno s aplikacijama koje se izvode na njemu ili kada se više izdanja Pythona mora izvoditi usporedo. a da se međusobno ne miješaju.

WinPython također uključuje mnoštvo paketa orijentiranih na znanost podataka - NumPy, Pandas, SciPy, Matplotlib itd. - tako da se mogu odmah koristiti, bez dodatnih koraka instalacije. Uključen je i C / C ++ kompajler, jer ga mnogi Windows računali nemaju, a mnoga ga Python proširenja zahtijevaju ili mogu iskoristiti.

WinPython ograničenja

Jedno ograničenje WinPythona je da za neke slučajeve upotrebe prema zadanim postavkama može sadržavati previše. Da bi to ispravili, tvorci WinPythona nude "nultu" verziju svakog izdanja WinPython, koja sadrži samo najnižu moguću instalaciju proizvoda. Kasnije se može dodati više paketa, bilo pomoću Pythonovog vlastitog pipalata ili WinPythonovog WPPM uslužnog programa.

Python prijenosni

Python Portable je izvršavanje CPythona u samostalnom paketu. Dolazi ljubaznošću kolekcije PortableDevApps sličnih samostalnih aplikacija.

Python prijenosni slučajevi upotrebe

Poput WinPythona, Python Portable uključuje mnoštvo paketa za znanstveno računanje - Matplotlib, Numba, SymPy, SciPy, Cython i drugi. Također poput WinPythona, i Python Portable radi bez potrebe da bude formalno instaliran na Windows računalu; može živjeti u bilo kojem direktoriju ili na prijenosnom pogonu. Uključeni su i Spyder IDE i Pythonov upravitelj pip paketa, tako da možete dodavati, mijenjati ili uklanjati pakete po potrebi.

Python prijenosna ograničenja

Za razliku od WinPython, Python Portable ne uključuje C / C ++ kompajler. Morat ćete osigurati C kompajler da biste koristili kod napisan s Cythonom (i tako kompiliran u C).

Eksperimentalne Python distribucije

Te distribucije čine značajne promjene na Pythonu - bilo zato što koriste Python kao polaznu točku za nešto sasvim novo, bilo zato što unose strateške promjene u standardni Python. Uglavnom, ovi se Pythoni još ne preporučuju za produkcijsku upotrebu. 

Ako u doglednoj budućnosti živite s bazom koda Python 2.x, možda biste htjeli pogledati naš članak o eksperimentalnim Python distribucijama koje održavaju Python 2.x na životu.

MicroPython

MicroPython pruža minimalni podskup jezika Python koji se može izvoditi na izuzetno niskom hardveru, poput mikrokontrolera. MicroPython implementira Python 3.4 s nekim razlikama. Lako je napisati MicroPython kôd ako poznajete Python, ali postojeći kôd možda neće raditi kao što jest.

Pikopija