Programmering

12 pythoner til ethvert programmeringsbehov

Når du vælger Python til softwareudvikling, vælger du et stort sprogøkosystem med et væld af pakker, der dækker alle former for programmeringsbehov. Men ud over biblioteker til alt fra GUI-udvikling til maskinindlæring kan du også vælge mellem et antal Python-driftstider - og nogle af disse driftstider kan være bedre egnet til den brugssag, du har ved hånden, end andre.

Her er en kort rundvisning i Python-distributioner, fra standardimplementeringen (CPython) til versioner optimeret til hastighed (PyPy), til specielle brugssager (Anaconda, ActivePython), til forskellige sprogkørselstider (Jython, IronPython) og endda til klipning kanteksperimentering (PyCopy, MesaPy).

CPython

CPython er referenceimplementeringen af ​​Python, den standardversion, som alle andre Python-inkarnationer ser til. CPython er skrevet i C, som antydet af navnet, og det produceres af den samme kernegruppe af mennesker, der er ansvarlige for alle de øverste beslutninger om Python-sproget.

CPython brugssager

Da CPython er referenceimplementeringen af ​​Python, er det den mest konservative med hensyn til optimeringer. Dette er af design. Pythons vedligeholdere ønsker, at CPython skal være den mest bredt kompatible og standardiserede implementering af Python, der er tilgængelig.

CPython er dit bedste valg, når kompatibilitet og overensstemmelse med Python-standarder betyder mere end rå ydelse og andre bekymringer. CPython er også nyttigt for den ekspert, der ønsker at arbejde med Python i sin mest grundlæggende inkarnation, og som er villig til at give afkald på visse bekvemmeligheder.

For eksempel skal du med CPython gøre lidt mere løft for at oprette virtuelle miljøer. Andre distroer (især Anaconda) giver mere automatisering omkring opsætning af arbejdsområde.

CPython-begrænsninger

CPython har ikke de præstationsoptimeringer, der findes i andre udgaver af Python. Der er ingen indfødte JIT (just-in-time) kompilator, ingen accelererede matematiske biblioteker og ingen tilføjelser fra tredjepart af hensyn til ydeevnen. Det er alt sammen ting, du kan tilføje alene, men de er ikke samlet. Igen er alt dette efter design for at sikre maksimal kompatibilitet og for at give CPython mulighed for at fungere som en referenceimplementering, men det betyder, at enhver præstationsoptimering er op til udvikleren.

Yderligere giver CPython kun et baseline sæt værktøjer til at arbejde med Python. Pip-pakkehåndtereren modtager og installerer f.eks. Pakker fra Pythons oprindelige PyPI-pakkeopbevaringssted. Pip installerer endda forudkompilerede binære filer (via hjulfordelingsformatet), hvis de leveres af udvikleren, men det installerer ikke nogen afhængigheder, som pakker måtte have uden for af PyPI.

Relateret video: Hvordan Python gør programmeringen nemmere

Python er perfekt til IT og forenkler mange slags arbejde, lige fra systemautomatisering til arbejde inden for banebrydende felter som maskinindlæring.

Anaconda Python

Anaconda, produceret af Anaconda, Inc. (tidligere Continuum Analytics), er designet til Python-udviklere, der har brug for en distribution bakket op af en kommerciel udbyder og med supportplaner for virksomheder. De vigtigste anvendelsessager for Anaconda Python er matematik, statistik, teknik, dataanalyse, maskinindlæring og relaterede applikationer.

Anaconda Python brugssager

Anaconda samler mange af de mest almindelige biblioteker, der bruges i kommercielt og videnskabeligt Python-arbejde - SciPy, NumPy, Numba og så videre - og gør mange flere af dem tilgængelige via et tilpasset pakningsadministrationssystem.

Anaconda skiller sig ud fra andre distributioner i, hvordan den integrerer alle disse stykker. Når den er installeret, leverer Anaconda en desktop-app - Anaconda Navigator - der gør alle aspekter af Anaconda-miljøet tilgængelige via en praktisk GUI. At finde komponenter, holde dem opdateret og arbejde med dem er en hel del lettere ud af kassen med Anaconda end med CPython.

En anden velsignelse er den måde, Anaconda håndterer komponenter uden for Python-økosystemet, hvis de er nødvendige for en bestemt pakke. Det conda pakkehåndtering, oprettet specielt til Anaconda, håndterer installation af både Python-pakker og eksterne softwarekrav fra tredjepart.

Anaconda Python begrænsninger

Da Anaconda indeholder så mange nyttige biblioteker og kan installere endnu mere med kun få tastetryk, kan størrelsen på en Anaconda-installation være meget større end CPython. En grundlæggende CPython-installation kører ca. 100 MB; Anaconda-installationer kan vokse til gigabyte i størrelse. Dette kan være et problem i situationer, hvor du har ressourcebegrænsninger.

En måde at reducere Anacondas fodaftryk er at installere Miniconda, en afskåret version af Anaconda, der kun indeholder det absolutte minimum af stykker, der er nødvendige for at komme i gang. Du kan derefter tilføje pakker til Miniconda, som du finder passende, med et øje for, hvor meget plads hvert stykke bruger.

ActivePython

Ligesom Anaconda oprettes og vedligeholdes ActivePython af et profitabelt selskab - i dette tilfælde ActiveState, der markedsfører en række sprogkørselstider sammen med Komodo IDE på flere sprog.

ActivePython brugssager

ActivePython er rettet mod virksomhedsbrugere og dataforskere - folk, der ønsker at bruge Python, men ikke vil bruge en stor indsats på at samle og administrere en Python-installation. ActivePython bruger Pythons almindelige pip pakkehåndtering, men leverer også et par hundrede almindelige biblioteker som verificerede indpakker sammen med nogle almindelige biblioteker med tredjepartsafhængigheder såsom Intel Math Kernel Library.

ActivePython-begrænsninger

Der er en potentiel ulempe ved ActivePythons tilgang til håndtering af pakker med eksterne afhængigheder. Hvis du vil opgradere til en nyere version af et projekt med komplekse afhængigheder (f.eks. TensorFlow), skal du også opgradere din ActivePython-installation. I miljøer, hvor udvikling har tendens til at være bundet til en bestemt version af et projekt, er dette mindre et problem. Men i miljøer, hvor udvikling har tendens til at spore banebrydende versioner, kan det udgøre et problem.

PyPy

En drop-in erstatning for CPython-tolk, PyPy bruger just-in-time (JIT) kompilering for at fremskynde udførelsen af ​​Python-programmer. Afhængigt af den opgave, der udføres, kan præstationsgevinsterne være dramatiske.

PyPy brugssager

En almindelig klage over Python generelt og især CPython er hastighed. Som standard kører Python mange gange langsommere end C, undertiden hundreder af gange langsommere. PyPy JIT-kompilerer Python-kode til maskinens sprog og giver i gennemsnit en 7,7x hastighed over CPython. Nogle opgaver kører så meget som 50 gange hurtigere.

Den bedste del er, at der kræves lidt eller ingen indsats fra udviklerens side for at låse op for disse gevinster. Byt CPython ud for PyPy, og for det meste er du færdig.

PyPy-begrænsninger

PyPy har altid klaret sig bedst med “rene” Python-applikationer. Python-pakker, der grænseflader med C-biblioteker, såsom NumPy, har ikke haft det så godt på grund af den måde, PyPy har efterlignet CPythons native binære grænseflader. Over tid har PyPys udviklere dog kørt væk fra dette emne og gjort PyPy langt mere kompatibel med de fleste Python-pakker, der afhænger af C-udvidelser. Kort sagt er understøttelse af C-udvidelser stadig begrænset, men langt mindre, end det plejede at være.

En anden mulig ulempe med PyPy er størrelsen på runtime. Kernens CPython-kørselstid på Windows, ekskl. Standardbiblioteket, er omkring 4 MB, mens PyPy-kørselstiden er omkring 32 MB. Bemærk også, at PyPy længe har lagt vægt på 2.x-grenen af ​​Python, så for eksempel er PyPy til Python 3.x i øjeblikket kun tilgængelig for Windows i en 32-bit beta-testversion. (PyPy fås i 64-bit versioner til Python 2.x og 3.x til Linux og MacOS.)

Jython

JVM (Java Virtual Machine) fungerer som runtime for mange sprog udover Java. Den lange liste inkluderer Groovy, Scala, Clojure, Kotlin og, ja, Python ved hjælp af Jython-projektet.

Jython brugssager

Jython kompilerer Python 2.x-kode til JVM bytecode og kører det resulterende program på JVM. I nogle tilfælde vil et Jython-kompileret program køre hurtigere end dets CPython-modstykke, men ikke altid.

Den største fordel Jython giver er direkte interoperabilitet med resten af ​​Java-økosystemet. Java bruges endnu bredere end Python. At køre Python på JVM giver Python-udviklere mulighed for at udnytte et enormt økosystem af biblioteker og rammer, som de ellers ikke ville være i stand til at bruge. På samme måde tillader Jython Java-udviklere at bruge Python-biblioteker.

Jython begrænsninger

Den største ulempe ved Jython er, at den kun understøtter 2.x-grenen af ​​Python. Support til Python 3.x er under udvikling, men har været det i nogen tid. Indtil videre er der ikke frigivet noget.

Bemærk også, at mens Jython bringer Python til JVM, bringer det ikke Python til Android. Da der i øjeblikket ikke er nogen havn i Jython til korrekt Android, kan Jython ikke bruges til at udvikle Android-applikationer.

IronPython

Ligesom Jython er en implementering af Python på JVM, er IronPython en implementering af Python på .Net-runtime eller CLR (Common Language Runtime). IronPython bruger DLR (Dynamic Language Runtime) i CLR til at tillade Python-programmer at køre med den samme grad af dynamik, som de gør i CPython.

IronPython brugssager

Ligesom Jython er IronPython en bro. Den store brugssag er interoperabilitet mellem Python og .Net-universet. Eksisterende .Net-samlinger kan indlæses i IronPython-programmer ved hjælp af Pythons oprindelige import- og objektmanipulationssyntaks. Det er også muligt at kompilere IronPython-kode til en samling og køre den som den er eller påberåbe den fra andre sprog. Bemærk dog, at MSIL (Microsoft Intermediate Language) i samlingen ikke kan fås direkte adgang fra andre .Net-sprog, da det ikke er i overensstemmelse med Common Language Specification.

IronPython-begrænsninger

Ligesom Jython understøtter IronPython i øjeblikket kun Python 2.x. Der arbejdes dog med at skabe en IronPython 3.x-implementering.

WinPython

Som navnet antyder, er WinPython en Python-distribution oprettet specielt til brugere af Microsoft Windows. CPythons tidligere udgaver til Windows var ikke godt designet, og det var svært for Windows-brugere at drage fuld fordel af Python-økosystemet. CPythons Windows-udgave er forbedret over tid, men WinPython tilbyder stadig mange ting, der ikke findes i CPython.

WinPython brugssager

WinPythons hovedattraktion er, at det er en selvstændig udgave af Python. Det behøver ikke at blive installeret på maskinen, hvor det kører; det skal bare pakkes ud i et bibliotek. Dette gør WinPython nyttigt i tilfælde, hvor software ikke kan installeres på et givet system, i scenarier, hvor en forudkonfigureret Python-runtime skal distribueres sammen med applikationerne, der skal køre på det, eller hvor flere udgaver af Python skal køre side om side uden at blande sig med hinanden.

WinPython pakker også en række datavidenskabsorienterede pakker - NumPy, Pandas, SciPy, Matplotlib osv. - så de kan bruges med det samme uden yderligere installationstrin. Også inkluderet er en C / C ++ -compiler, da mange Windows-maskiner ikke har en inkluderet, og mange Python-udvidelser kræver eller kan gøre brug af den.

WinPython-begrænsninger

En begrænsning af WinPython er, at det som standard kan omfatte for meget for nogle brugssager. For at afhjælpe det giver WinPythons skabere en "nul" version af hver WinPython-udgave, der kun indeholder den mest minimale installation af produktet. Flere pakker kan tilføjes senere, enten med Pythons egne pip værktøj eller WinPythons WPPM-værktøj.

Python bærbar

Python Portable er CPython-runtime i en selvstændig pakke. Det kommer med tilladelse til PortableDevApps-samlingen af ​​lignende selvstændige applikationer.

Python bærbare brugssager

Ligesom WinPython inkluderer Python Portable en række pakker til videnskabelig computing - Matplotlib, Numba, SymPy, SciPy, Cython og andre. Også ligesom WinPython kører Python Portable uden at skulle installeres formelt på Windows-værten; det kan bo i ethvert bibliotek eller på et flytbart drev. Også inkluderet er Spyder IDE og Pythons pip-pakkehåndtering, så du kan tilføje, ændre eller fjerne pakker efter behov.

Python Portable begrænsninger

I modsætning til WinPython inkluderer Python Portable ikke en C / C ++ - compiler. Du bliver nødt til at give en C-kompilator for at gøre brug af kode skrevet med Cython (og således kompileret til C).

Eksperimentelle Python-distributioner

Disse distributioner foretager betydelige ændringer i Python - enten fordi de bruger Python som udgangspunkt for noget helt nyt, eller fordi de foretager strategiske ændringer i standard Python. I det store og hele anbefales disse pythoner ikke til produktionsbrug endnu.

Hvis du lever med en Python 2.x-kodebase i en overskuelig fremtid, kan du tjekke vores artikel om de eksperimentelle Python-distributioner, der holder Python 2.x i live.

MicroPython

MicroPython giver en minimal delmængde af Python-sproget, der kan køre på ekstremt low-end hardware såsom mikrokontrollere. MicroPython implementerer Python 3.4 med nogle forskelle. Det er nemt at skrive MicroPython-kode, hvis du kender Python, men eksisterende kode kører muligvis ikke som den er.

Pycopy

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