Programiranje

12 Pythonov za vsako programsko potrebo

Ko izberete Python za razvoj programske opreme, izberete velik jezikovni ekosistem z obilico paketov, ki pokrivajo vse vrste programskih potreb. Toda poleg knjižnic za vse, od razvoja grafičnega uporabniškega vmesnika do strojnega učenja, lahko izbirate tudi med številnimi izvedbami Pythona - in nekateri od teh izvajalcev so morda bolj primerni za primer uporabe, ki ga imate na voljo, kot drugi.

Tu je kratek ogled distribucij Pythona, od standardne izvedbe (CPython) do različic, optimiziranih za hitrost (PyPy), za posebne primere uporabe (Anaconda, ActivePython), za različna jezikovna izvajanja (Jython, IronPython) in celo za rezanje - eksperimentiranje na robovih (PyCopy, MesaPy).

CPython

CPython je referenčna izvedba Pythona, standardne različice, ki jo iščejo vse druge inkarnacije Pythona. CPython je napisan v jeziku C, kot navaja ime, proizvaja pa ga ista skupina ljudi, odgovorna za vse odločitve na najvišji ravni o jeziku Python.

Primeri uporabe CPython

Ker je CPython referenčna izvedba Pythona, je z vidika svojih optimizacij najbolj konzervativen. To je po zasnovi. Vzdrževalci Pythona želijo, da je CPython najbolj široko združljiva in standardizirana izvedba Pythona, ki je na voljo.

CPython je vaša najboljša izbira, kadar sta združljivost in skladnost s standardi Python pomembnejši od surove zmogljivosti in drugih skrbi. CPython je koristen tudi za strokovnjaka, ki želi sodelovati s Pythonom v njegovi najbolj temeljni inkarnaciji in je pripravljen odreči se nekaterim ugodnostim.

Na primer, s CPythonom morate še malo dvigniti, da nastavite navidezna okolja. Drugi distros (zlasti Anaconda) zagotavljajo več avtomatizacije pri nastavitvi delovnega prostora.

Omejitve CPython

CPython nima optimizacij zmogljivosti, ki jih najdemo v drugih izdajah Pythona. Za delovanje ni nobenega izvornega prevajalnika JIT (ravno ob pravem času), niti pospešenih matematičnih knjižnic in nobenih drugih dodatkov. To so vse stvari, ki jih lahko dodate sami, vendar niso v paketu. Še enkrat, vse to je načrtovano, da se zagotovi največja združljivost in da CPython služi kot referenčna izvedba, vendar to pomeni, da je za kakršno koli optimizacijo delovanja odgovoren razvijalec.

Poleg tega CPython ponuja le osnovni nabor orodij za delo s Pythonom. Upravitelj paketov pip na primer pridobi in namesti pakete iz Pythonovega izvornega repozitorija paketov PyPI. Pip bo celo namestil vnaprej sestavljene binarne datoteke (prek formata za distribucijo koles), če jih zagotovi razvijalec, vendar ne bo namestil nobene odvisnosti, ki bi jo lahko imeli paketi zunaj PyPI.

Povezani video: Kako Python olajša programiranje

Kot nalašč za IT, Python poenostavlja številne vrste dela, od avtomatizacije sistema do dela na najsodobnejših področjih, kot je strojno učenje.

Anaconda Python

Anaconda, ki jo proizvaja Anaconda, Inc. (prej Continuum Analytics), je namenjena razvijalcem Pythona, ki potrebujejo distribucijo, podprto s komercialnim ponudnikom, in z načrti podpore za podjetja. Glavni primeri uporabe Anaconde Python so matematika, statistika, inženiring, analiza podatkov, strojno učenje in z njimi povezane aplikacije.

Primeri uporabe Anaconda Python

Anaconda združuje številne najpogostejše knjižnice, ki se uporabljajo v komercialnih in znanstvenih Pythonovih delih - SciPy, NumPy, Numba itd., In veliko več jih omogoča prek sistema za prilagajanje paketov po meri.

Anaconda se razlikuje od drugih distribucij po tem, kako vključuje vse te dele. Ko je nameščena, Anaconda ponuja namizno aplikacijo - Anaconda Navigator -, ki omogoča vsak vidik okolja Anaconda prek priročnega grafičnega uporabniškega vmesnika. Iskanje komponent, njihovo posodabljanje in delo z njimi je pri Anacondi precej lažje kot pri CPythonu.

Druga prednost je način, kako Anaconda ravna s komponentami zunaj ekosistema Python, če so potrebne za določen paket. The conda Upravitelj paketov, ki je bil ustvarjen posebej za Anaconda, obravnava namestitev paketov Python in zunanjih zahtev zunanje programske opreme.

Omejitve Anaconde Python

Ker Anaconda vključuje toliko uporabnih knjižnic in lahko z le nekaj pritiski tipk namesti še več, je velikost namestitve Anaconde lahko veliko večja od CPythona. Osnovna namestitev CPython traja približno 100 MB; Namestitve Anaconde lahko zrastejo do gigabajtov. To je lahko težava v primerih, ko imate omejitve virov.

Eden od načinov za zmanjšanje odtisa Anaconde je namestitev Miniconde, odstranjene različice Anaconde, ki vključuje le absolutni minimum kosov, potrebnih za vstajanje in zagon. Nato lahko dodate pakete v Minicondo, kot se vam zdi primerno, s pozornostjo, koliko prostora porabi posamezen kos.

ActivePython

Tako kot Anaconda tudi ActivePython ustvarja in vzdržuje profitno podjetje - v tem primeru ActiveState, ki skupaj z večjezičnim Komodo IDE trži številne jezikovne izvedbe.

Primeri uporabe ActivePython

ActivePython je namenjen poslovnim uporabnikom in znanstvenikom podatkov - ljudem, ki želijo uporabljati Python, vendar ne želijo porabiti veliko truda za sestavljanje in upravljanje namestitve Pythona. ActivePython uporablja Pythonov regular pip upravitelja paketov, pa tudi nekaj sto skupnih knjižnic kot preverjenih paketov, skupaj z nekaterimi običajnimi knjižnicami s neodvisnimi odvisnostmi, kot je knjižnica Intel Math Kernel.

Omejitve ActivePython

Obstaja ena potencialna pomanjkljivost pristopa ActivePython za ravnanje s paketi z zunanjimi odvisnostmi. Če želite nadgraditi na novejšo različico projekta s kompleksnimi odvisnostmi (npr. TensorFlow), boste morali nadgraditi tudi namestitev ActivePython. V okoljih, kjer je razvoj običajno vezan na določeno različico projekta, je to manj pomembno. Toda v okoljih, kjer razvoj običajno sledi najsodobnejšim različicam, bi to lahko predstavljalo težavo.

PyPy

Nadomestna programska oprema za tolmač CPython, PyPy uporablja kompilacijo JIT (pravočasno) za pospešitev izvajanja programov Python. Glede na nalogo, ki jo opravljamo, je lahko povečanje učinkovitosti dramatično.

Primeri uporabe PyPy

Pogosta pritožba glede Pythona in predvsem CPythona je hitrost. Python privzeto deluje velikokrat počasneje kot C, včasih tudi stokrat počasneje. PyPy JIT prevaja kodo Python v strojni jezik in v povprečju zagotavlja 7,7-krat večjo hitrost od CPythona. Nekatera opravila se izvajajo tudi do 50-krat hitreje.

Najboljše je, da razvijalec za odkritje teh zaslužkov zahteva malo ali nič napora. Zamenjajte CPython za PyPy in večinoma ste končali.

Omejitve PyPy

PyPy je bil vedno najboljši pri "čistih" aplikacijah Python. Paketi Python, ki se povezujejo s knjižnicami C, kot je NumPy, se prav tako niso odrezali zaradi načina, kako je PyPy posnemal domače binarne vmesnike CPythona. Sčasoma pa so se razvijalci PyPy izognili tej težavi in ​​jo PyPy naredili veliko bolj združljivo z večino paketov Python, ki so odvisni od razširitev C. Skratka, podpora za razširitve C je še vedno omejena, vendar veliko manj kot nekoč.

Druga možna slabost PyPy je velikost časa izvajanja. Jedro izvajalnega okolja CPython v sistemu Windows, razen standardne knjižnice, je približno 4 MB, medtem ko je izvajalnega okolja PyPy približno 32 MB. Upoštevajte tudi, da PyPy že dolgo poudarja 2.x vejo Pythona, zato je na primer PyPy za Python 3.x trenutno na voljo samo za Windows v 32-bitni različici beta-testa. (PyPy je na voljo v 64-bitnih različicah za Python 2.x in 3.x za Linux in MacOS.)

Jython

JVM (Java Virtual Machine) služi kot izvajalno okolje za številne jezike poleg Jave. Dolg seznam vključuje Groovy, Scala, Clojure, Kotlin in, da, Python, v okviru projekta Jython.

Jython primeri uporabe

Jython prevede kodo Python 2.x v bajtno kodo JVM in na JVM zažene nastali program. V nekaterih primerih bo program, sestavljen iz Jythona, deloval hitreje kot njegov sogovornik CPython, vendar ne vedno.

Največja prednost, ki jo ponuja Jython, je neposredna interoperabilnost s preostalim ekosistemom Java. Java se uporablja celo širše kot Python. Zagon Pythona na JVM omogoča razvijalcem Pythona, da se dotaknejo ogromnega ekosistema knjižnic in okvirov, ki jih sicer ne bi mogli uporabljati. Na enak način Jython razvijalcem Java omogoča uporabo knjižnic Python.

Omejitve jythona

Največja pomanjkljivost Jythona je, da podpira samo 2.x vejo Pythona. Podpora za Python 3.x je v razvoju, vendar že nekaj časa. Zaenkrat še ni izšlo nič.

Upoštevajte tudi, da medtem ko Jython Python pripelje v JVM, pa Pythona ne pripelje do Androida. Ker trenutno ni nobenega pristanišča Jython do samega Androida, Jythona ni mogoče uporabiti za razvoj aplikacij za Android.

IronPython

Tako kot je Jython izvedba Pythona na JVM, je IronPython izvedba Pythona v času izvajanja .Net ali CLR (Common Language Runtime). IronPython uporablja DLR (Dynamic Language Runtime) CLR, da programom Python omogoča izvajanje z enako mero dinamičnosti kot v CPythonu.

Primeri uporabe IronPythona

Tako kot Jython je tudi IronPython most. Velik primer uporabe je interoperabilnost med Pythonom in vesoljem .Net. Obstoječe sklope .Net lahko naložite v programe IronPython z uporabo Pythonove izvorne sintakse za uvoz in manipulacijo z objekti. Kodo IronPython je mogoče tudi sestaviti v sklop in jo zagnati, kakršna je, ali jo priklicati iz drugih jezikov. Vendar upoštevajte, da do MSIL (Microsoftov vmesni jezik) v sklopu ni mogoče neposredno dostopati iz drugih jezikov .Net, ker ni v skladu s specifikacijo skupnega jezika.

Omejitve IronPythona

Tako kot Jython tudi IronPython trenutno podpira samo Python 2.x. Vendar poteka delo za izdelavo izvedbe IronPython 3.x.

WinPython

Kot že ime pove, je WinPython distribucija Pythona, ustvarjena posebej za uporabnike sistema Microsoft Windows. Prejšnje izdaje CPythona za Windows niso bile dobro zasnovane in uporabniki sistema Windows so težko izkoristili vse prednosti ekosistema Python. CPythonova izdaja za Windows se je sčasoma izboljšala, vendar WinPython še vedno ponuja veliko stvari, ki jih CPython ne najde.

Primeri uporabe WinPython

Glavna atrakcija WinPythona je, da gre za samostojno izdajo Pythona. Ni ga treba namestiti na stroj, kjer deluje; samo razpakirati ga je treba v imenik. Zaradi tega je WinPython uporaben v primerih, ko v določenem sistemu ni mogoče namestiti programske opreme, v scenarijih, kjer je treba vnaprej konfigurirano izvajanje Pythona distribuirati skupaj z aplikacijami, ki se na njem izvajajo, ali kadar je treba več različic Pythona izvajati vzporedno ne da bi se pri tem vmešavali.

WinPython vključuje tudi množico paketov, usmerjenih v naravoslovje - NumPy, Pandas, SciPy, Matplotlib itd., Tako da jih je mogoče uporabiti takoj, brez dodatnih korakov namestitve. Vključen je tudi prevajalnik C / C ++, saj ga mnogi računalniki s sistemom Windows nimajo, številne razširitve Python pa ga zahtevajo ali lahko izkoristijo.

Omejitve WinPython

Ena omejitev WinPythona je, da lahko privzeto vključuje preveč za nekatere primere uporabe. Da bi to odpravili, ustvarjalci WinPythona ponujajo "nič" različico vsake izdaje WinPython, ki vsebuje le čim manjšo možno namestitev izdelka. Kasneje je mogoče dodati več paketov, bodisi s Pythonovim pip orodje ali pripomoček WPPM WinPython.

Python prenosni

Python Portable je izvajalno okolje CPython v samostojnem paketu. Na voljo je z zbirko podobno samostojnih aplikacij PortableDevApps.

Python prenosni primeri uporabe

Tako kot WinPython tudi Python Portable vključuje množico paketov za znanstveno računalništvo - Matplotlib, Numba, SymPy, SciPy, Cython in drugi. Tako kot WinPython tudi Python Portable deluje, ne da bi ga bilo treba formalno namestiti na gostitelju Windows; lahko živi v katerem koli imeniku ali na izmenljivem pogonu. Vključena sta tudi Spyder IDE in Pythonov upravitelj paketov pip, tako da lahko po potrebi dodajate, spreminjate ali odstranjujete pakete.

Omejitve prenosnega programa Python

Za razliko od WinPython, Python Portable ne vključuje prevajalnika C / C ++. Za uporabo kode, napisane s Cythonom (in tako prevedene v C), boste morali zagotoviti prevajalnik C.

Eksperimentalne distribucije Pythona

Te distribucije bistveno spremenijo Python - bodisi zato, ker uporabljajo Python kot izhodišče za nekaj povsem novega bodisi ker strateško spreminjajo standardni Python. Ti Pythoni na splošno še niso priporočljivi za proizvodno uporabo.

Če v bližnji prihodnosti živite s kodno bazo Python 2.x, si oglejte članek o poskusni distribuciji Pythona, ki ohranja Python 2.x pri življenju.

MicroPython

MicroPython ponuja minimalno podskupino jezika Python, ki se lahko izvaja na izredno nizki strojni opremi, kot so mikrokrmilniki. MicroPython izvaja Python 3.4 z nekaterimi razlikami. Kodo MicroPython lahko enostavno napišete, če poznate Python, vendar obstoječa koda morda ne bo delovala, kot je.

Pikopija

$config[zx-auto] not found$config[zx-overlay] not found