12 Pythons för alla programmeringsbehov

När du väljer Python för mjukvaruutveckling väljer du ett stort språkekosystem med en mängd paket som täcker alla typer av programmeringsbehov. Men förutom bibliotek för allt från GUI-utveckling till maskininlärning kan du också välja mellan ett antal Python-driftstider - och en del av dessa driftstider kan vara bättre lämpade för det användningsfall du har till hands än andra.

Här är en kort rundtur i Python-distributioner, från standardimplementeringen (CPython) till versioner optimerade för hastighet (PyPy), för specialanvändningsfall (Anaconda, ActivePython), för olika språktid (Jython, IronPython) och till och med för skärning kantexperimentering (PyCopy, MesaPy).

CPython

CPython är referensimplementeringen av Python, standardversionen som alla andra Python-inkarnationer ser till. CPython är skrivet i C, vilket antyds av namnet, och det produceras av samma kärngrupp som ansvarar för alla beslut på toppnivå om Python-språket.

CPython användningsfall

Eftersom CPython är referensimplementeringen av Python är det det mest konservativa när det gäller optimeringar. Detta är av design. Pythons underhållare vill att CPython ska vara den mest breda kompatibla och standardiserade implementeringen av Python som finns tillgänglig.

CPython är ditt bästa val när kompatibilitet och överensstämmelse med Python-standarder betyder mer än rå prestanda och andra problem. CPython är också användbart för den expert som vill arbeta med Python i sin mest grundläggande inkarnation, och som är villig att avstå från vissa bekvämligheter. 

Med CPython måste du till exempel göra lite mer lyft för att skapa virtuella miljöer. Andra distros (särskilt Anaconda) ger mer automatisering kring installation av arbetsytor.

CPython-begränsningar

CPython har inte de prestandaoptimeringar som finns i andra utgåvor av Python. Det finns ingen inbyggd JIT (just-in-time) kompilator, inga accelererade mattebibliotek och inga tillägg från tredje part för prestandas skull. Det är allt du kan lägga till på egen hand, men de är inte buntade. Återigen, allt detta är designat, för att säkerställa maximal kompatibilitet och för att låta CPython fungera som en referensimplementering, men det betyder att alla prestandaoptimeringar är upp till utvecklaren.

Vidare tillhandahåller CPython endast en baslinje uppsättning verktyg för att arbeta med Python. Pip-pakethanteraren, till exempel, hämtar och installerar paket från Pythons ursprungliga PyPI-paketförvar. Pip kommer till och med att installera förkompilerade binärer (via hjuldistributionsformatet) om de tillhandahålls av utvecklaren, men det kommer inte att installera några beroenden som paket kan ha utanför PyPI. 

Relaterad video: Hur Python gör programmeringen enklare

Perfekt för IT, förenklar Python många typer av arbete, från systemautomation till arbete i banbrytande fält som maskininlärning.

Anaconda Python

Anaconda, producerad av Anaconda, Inc. (tidigare Continuum Analytics), är utformat för Python-utvecklare som behöver en distribution som stöds av en kommersiell leverantör och med supportplaner för företag. De främsta användningsfall för Anaconda Python är matematik, statistik, teknik, dataanalys, maskininlärning och relaterade applikationer.

Anaconda Python användningsfall

Anaconda buntar många av de vanligaste biblioteken som används i kommersiellt och vetenskapligt Python-arbete - SciPy, NumPy, Numba och så vidare - och gör många fler av dem tillgängliga via ett anpassat paketförvaltningssystem.

Anaconda sticker ut från andra distributioner i hur den integrerar alla dessa bitar. När den är installerad tillhandahåller Anaconda en stationär app - Anaconda Navigator - som gör alla aspekter av Anaconda-miljön tillgängliga via ett bekvämt GUI. Att hitta komponenter, hålla dem uppdaterade och arbeta med dem är mycket enklare ur lådan med Anaconda än med CPython.

En annan välsignelse är hur Anaconda hanterar komponenter utanför Python-ekosystemet om de behövs för ett specifikt paket. Den condapakethanteraren, som skapats speciellt för Anaconda, handtag installera både Python-paket och tredje part, externa krav programvara.

Anaconda Python-begränsningar

Eftersom Anaconda innehåller så många användbara bibliotek och kan installera ännu mer med bara några få knapptryckningar, kan storleken på en Anaconda-installation vara mycket större än CPython. En grundläggande CPython-installation kör cirka 100 MB; Anaconda-installationer kan växa till gigabyte i storlek. Detta kan vara ett problem i situationer där du har resursbegränsningar.

Ett sätt att minska Anacondas fotavtryck är att installera Miniconda, en avskalad version av Anaconda som endast innehåller det absoluta minimum av bitar som behövs för att komma igång. Du kan sedan lägga till paket till Miniconda som du tycker passar, med ett öga på hur mycket utrymme varje bit förbrukar.

ActivePython

Precis som Anaconda skapas och underhålls ActivePython av ett vinstdrivande företag - i det här fallet ActiveState, som marknadsför ett antal språktider tillsammans med flerspråkiga Komodo IDE.

ActivePython-användningsfall

ActivePython riktar sig till företagsanvändare och dataforskare - människor som vill använda Python men inte vill spendera mycket arbete på att montera och hantera en Python-installation. ActivePython använder Pythons vanliga pippakethanterare, men levererar också några hundra vanliga bibliotek som verifierade paket, tillsammans med några vanliga bibliotek med tredjepartsberoenden som Intel Math Kernel Library.

ActivePython-begränsningar

Det finns en potentiell nackdel med ActivePythons strategi för hantering av paket med externa beroenden. Om du vill uppgradera till en nyare version av ett projekt med komplexa beroenden (t.ex. TensorFlow) måste du också uppgradera din ActivePython-installation. I miljöer där utveckling tenderar att vara knuten till en specifik version av ett projekt är detta mindre problem. Men i miljöer där utveckling tenderar att spåra banbrytande versioner kan det utgöra ett problem.

PyPy

En drop-in ersättning för CPython tolk, PyPy använder just-in-time (JIT) sammanställning för att påskynda körningen av Python-program. Beroende på vilken uppgift som utförs kan prestationsvinsterna vara dramatiska. 

PyPy-användningsfall

Ett vanligt klagomål om Python i allmänhet och CPython i synnerhet är hastighet. Som standard körs Python många gånger långsammare än C, ibland hundratals gånger långsammare. PyPy JIT-kompilerar Python-kod till maskinspråk, vilket ger i genomsnitt en hastighet på 7,7 gånger över CPython. Vissa uppgifter går så mycket som 50 gånger snabbare. 

Det bästa är att utvecklaren kräver liten eller ingen ansträngning för att låsa upp dessa vinster. Byt ut CPython mot PyPy, och för det mesta är du klar.

PyPy-begränsningar

PyPy har alltid presterat bäst med ”rena” Python-applikationer. Python-paket som gränssnitt med C-bibliotek, såsom NumPy, har inte gått lika bra på grund av hur PyPy har emulerat CPythons ursprungliga binära gränssnitt. Med tiden har dock PyPys utvecklare vittnat om det här problemet och gjort PyPy mycket mer kompatibelt med de flesta Python-paket som är beroende av C-tillägg. Kort sagt, stödet för C-tillägg är fortfarande begränsat, men mycket mindre än det brukade vara.

En annan möjlig nackdel med PyPy är storleken på körtiden. Kärnan i CPython-körning på Windows, exklusive standardbiblioteket, är cirka 4 MB, medan PyPy-körtiden är cirka 32 MB. Observera också att PyPy länge har betonat 2.x-grenen av Python, så till exempel är PyPy för Python 3.x för närvarande endast tillgängligt för Windows i en 32-bitars beta-testversion. (PyPy finns i 64-bitarsversioner för Python 2.x och 3.x för Linux och MacOS.)

Jython

JVM (Java Virtual Machine) fungerar som körtid för många språk förutom Java. Den långa listan inkluderar Groovy, Scala, Clojure, Kotlin och, ja, Python, genom Jython-projektet.

Jython användningsfall

Jython kompilerar Python 2.x-kod till JVM bytecode och kör det resulterande programmet på JVM. I vissa fall körs ett Jython-kompilerat program snabbare än dess CPython-motsvarighet, men inte alltid.

Den största fördelen som Jython ger är direkt interoperabilitet med resten av Java-ekosystemet. Java används ännu bredare än Python. Genom att köra Python på JVM kan Python-utvecklare utnyttja ett enormt ekosystem av bibliotek och ramar som de annars inte skulle kunna använda. På samma sätt tillåter Jython Java-utvecklare att använda Python-bibliotek. 

Jython begränsningar

Den största nackdelen med Jython är att den endast stöder 2.x-grenen av Python. Stöd för Python 3.x är under utveckling men har varit det under en tid. Hittills har inget släppts.

Observera också att medan Jython tar med Python till JVM, tar det inte Python till Android. Eftersom det för närvarande inte finns någon hamn i Jython till Android, kan Jython inte användas för att utveckla Android-applikationer.

IronPython

Precis som Jython är en implementering av Python på JVM, är IronPython en implementering av Python på .Net-körtiden, eller CLR (Common Language Runtime). IronPython använder DLR (Dynamic Language Runtime) i CLR för att låta Python-program köras med samma grad av dynamik som de gör i CPython.

IronPython användningsfall

Precis som Jython är IronPython en bro. Det stora användningsfallet är interoperabilitet mellan Python och .Net-universum. Befintliga .Net-enheter kan laddas i IronPython-program med Pythons ursprungliga syntax för import och objektmanipulation. Det är också möjligt att kompilera IronPython-koden till en enhet och köra den som den är eller åberopa den från andra språk. Observera dock att MSIL (Microsoft Intermediate Language) i enheten inte kan nås direkt från andra .Net-språk, eftersom det inte överensstämmer med Common Language Specification.

IronPython-begränsningar

Liksom Jython stöder IronPython för närvarande endast Python 2.x. Arbetet pågår dock för att skapa en IronPython 3.x-implementering.

WinPython

Som namnet antyder är WinPython en Python-distribution skapad speciellt för användare av Microsoft Windows. CPythons tidigare utgåvor för Windows var inte väl utformade och det var svårt för Windows-användare att dra full nytta av Python-ekosystemet. CPythons Windows-utgåva har förbättrats över tiden, men WinPython erbjuder fortfarande många saker som inte finns i CPython.

WinPython användningsfall

WinPythons huvudattraktion är att det är en fristående utgåva av Python. Det behöver inte installeras på maskinen där den körs; det behöver bara packas upp i en katalog. Detta gör WinPython användbart i fall där programvara inte kan installeras på ett visst system, i scenarier där en förkonfigurerad Python-körning behöver distribueras tillsammans med applikationerna för att köras på den, eller där flera utgåvor av Python behöver köras sida vid sida utan att störa varandra.

WinPython buntar också en rad datavetenskapliga orienterade paket - NumPy, Pandas, SciPy, Matplotlib, etc. - så att de kan användas direkt utan ytterligare installationssteg. Dessutom ingår en C / C ++ - kompilator, eftersom många Windows-maskiner inte har en inkluderad, och många Python-tillägg kräver eller kan använda den.

WinPython-begränsningar

En begränsning av WinPython är att det kan innehålla för mycket som standard för vissa användningsfall. För att avhjälpa detta tillhandahåller WinPythons skapare en "noll" -version av varje WinPython-utgåva, som endast innehåller den mest minimala installationen av produkten. Fler paket kan läggas till senare, antingen med Pythons eget pipverktyg eller WinPythons WPPM-verktyg.

Python Portable

Python Portable är CPython-körningen i ett fristående paket. Det kommer med tillstånd av PortableDevApps-samlingen av liknande fristående applikationer.

Python bärbara användningsfall

Precis som WinPython innehåller Python Portable en massa paket för vetenskaplig databehandling - Matplotlib, Numba, SymPy, SciPy, Cython och andra. Liksom WinPython körs Python Portable utan att behöva installeras formellt på Windows-värden; den kan bo i valfri katalog eller på en flyttbar enhet. Spyder IDE och Pythons pip-pakethanterare ingår också, så att du kan lägga till, ändra eller ta bort paket efter behov.

Python Portable begränsningar

Till skillnad från WinPython innehåller Python Portable inte en C / C ++ - kompilator. Du måste tillhandahålla en C-kompilator för att använda koden skriven med Cython (och därmed kompilerad till C).

Experimentella Python-distributioner

Dessa distributioner gör betydande förändringar i Python - antingen för att de använder Python som utgångspunkt för något helt nytt, eller för att de gör strategiska förändringar av standard Python. I stort sett rekommenderas inte dessa Pythons för produktionsanvändning ännu. 

Om du lever med en Python 2.x-kodbas inom överskådlig framtid kanske du vill kolla in vår artikel om de experimentella Python-distributionerna som håller Python 2.x vid liv.

MicroPython

MicroPython ger en minimal delmängd av Python-språket som kan köras på extremt låg hårdvara, t.ex. mikrokontroller. MicroPython implementerar Python 3.4 med vissa skillnader. Det är enkelt att skriva MicroPython-kod om du känner till Python, men befintlig kod kanske inte körs som den är.

Pycopy