12 Pythons für jeden Programmierbedarf

Wenn Sie sich für Python für die Softwareentwicklung entscheiden, wählen Sie ein großes Sprachökosystem mit einer Vielzahl von Paketen, die alle Arten von Programmieranforderungen abdecken. Neben Bibliotheken für alles, von der GUI-Entwicklung bis zum maschinellen Lernen, können Sie auch aus einer Reihe von Python-Laufzeiten auswählen. Einige dieser Laufzeiten eignen sich möglicherweise besser für den jeweiligen Anwendungsfall als andere.

Hier finden Sie eine kurze Übersicht über Python-Distributionen, von der Standardimplementierung (CPython) bis zu Versionen, die für die Geschwindigkeit (PyPy) optimiert sind, für spezielle Anwendungsfälle (Anaconda, ActivePython), für verschiedene Sprachlaufzeiten (Jython, IronPython) und sogar zum Schneiden. Randexperimente (PyCopy, MesaPy).

CPython

CPython ist die Referenzimplementierung von Python, der Standardversion, nach der alle anderen Python-Inkarnationen suchen. CPython ist in C geschrieben, wie der Name andeutet, und wird von derselben Kerngruppe von Personen erstellt, die für alle Entscheidungen der obersten Ebene über die Python-Sprache verantwortlich sind.

CPython-Anwendungsfälle

Da CPython die Referenzimplementierung von Python ist, ist es hinsichtlich seiner Optimierungen am konservativsten. Dies ist beabsichtigt. Die Betreuer von Python möchten, dass CPython die am besten kompatible und standardisierte Implementierung von Python ist.

CPython ist die beste Wahl, wenn Kompatibilität und Konformität mit Python-Standards wichtiger sind als Rohleistung und andere Probleme. CPython ist auch nützlich für Experten, die mit Python in seiner grundlegendsten Form arbeiten möchten und bereit sind, auf bestimmte Annehmlichkeiten zu verzichten. 

Mit CPython müssen Sie beispielsweise etwas mehr Zeit aufwenden, um virtuelle Umgebungen einzurichten. Andere Distributionen (insbesondere Anaconda) bieten mehr Automatisierung bei der Einrichtung des Arbeitsbereichs.

CPython-Einschränkungen

CPython verfügt nicht über die Leistungsoptimierungen, die in anderen Python-Editionen enthalten sind. Es gibt keinen nativen JIT-Compiler (Just-in-Time), keine beschleunigten Mathematikbibliotheken und keine Ergänzungen von Drittanbietern, um die Leistung zu verbessern. Das sind alles Dinge, die Sie selbst hinzufügen können, aber sie sind nicht gebündelt. Auch dies alles ist beabsichtigt, um maximale Kompatibilität zu gewährleisten und CPython als Referenzimplementierung zu ermöglichen. Dies bedeutet jedoch, dass alle Leistungsoptimierungen dem Entwickler überlassen bleiben.

Darüber hinaus bietet CPython nur einen Basissatz von Tools für die Arbeit mit Python. Der pip-Paketmanager ruft beispielsweise Pakete aus dem nativen PyPI-Paketrepository von Python ab und installiert sie. Pip installiert sogar vorkompilierte Binärdateien (über das Radverteilungsformat ), wenn sie vom Entwickler bereitgestellt werden, installiert jedoch keine Abhängigkeiten, die Pakete möglicherweise außerhalb von PyPI haben. 

Zugehöriges Video: Wie Python die Programmierung erleichtert

Python ist perfekt für die IT geeignet und vereinfacht viele Arten von Arbeiten, von der Systemautomatisierung bis hin zur Arbeit in hochmodernen Bereichen wie maschinellem Lernen.

Anaconda Python

Anaconda, hergestellt von Anaconda, Inc. (ehemals Continuum Analytics), wurde für Python-Entwickler entwickelt, die eine von einem kommerziellen Anbieter unterstützte Distribution mit Supportplänen für Unternehmen benötigen. Die Hauptanwendungsfälle für Anaconda Python sind Mathematik, Statistik, Ingenieurwesen, Datenanalyse, maschinelles Lernen und verwandte Anwendungen.

Anaconda Python-Anwendungsfälle

Anaconda bündelt viele der in kommerziellen und wissenschaftlichen Python-Arbeiten am häufigsten verwendeten Bibliotheken - SciPy, NumPy, Numba usw. - und macht viele weitere über ein benutzerdefiniertes Paketverwaltungssystem zugänglich.

Anaconda unterscheidet sich von anderen Distributionen durch die Integration all dieser Teile. Nach der Installation bietet Anaconda eine Desktop-App - den Anaconda Navigator -, die alle Aspekte der Anaconda-Umgebung über eine praktische Benutzeroberfläche verfügbar macht. Mit Anaconda ist es viel einfacher, Komponenten zu finden, auf dem neuesten Stand zu halten und mit ihnen zu arbeiten als mit CPython.

Ein weiterer Segen ist die Art und Weise, wie Anaconda Komponenten von außerhalb des Python-Ökosystems behandelt, wenn sie für ein bestimmtes Paket benötigt werden. Der condaspeziell für Anaconda erstellte Paketmanager übernimmt die Installation von Python-Paketen und externen Softwareanforderungen von Drittanbietern.

Anaconda Python Einschränkungen

Da Anaconda so viele nützliche Bibliotheken enthält und mit nur wenigen Tastenanschlägen noch mehr installieren kann, kann die Größe einer Anaconda-Installation viel größer sein als bei CPython. Eine grundlegende CPython-Installation wird mit ca. 100 MB ausgeführt. Anaconda-Installationen können bis zu Gigabyte groß werden. Dies kann ein Problem in Situationen sein, in denen Sie Ressourcenbeschränkungen haben.

Eine Möglichkeit, den Platzbedarf von Anaconda zu verringern, ist die Installation von Miniconda, einer abgespeckten Version von Anaconda, die nur das absolute Minimum an Teilen enthält, die für die Inbetriebnahme erforderlich sind. Sie können Miniconda dann nach Belieben um Pakete erweitern, wobei Sie darauf achten, wie viel Platz jedes Stück benötigt.

ActivePython

Wie Anaconda wird ActivePython von einem gemeinnützigen Unternehmen erstellt und verwaltet - in diesem Fall ActiveState, das eine Reihe von Sprachlaufzeiten zusammen mit der mehrsprachigen Komodo-IDE vermarktet.

ActivePython-Anwendungsfälle

ActivePython richtet sich an Unternehmensbenutzer und Datenwissenschaftler - Personen, die Python verwenden möchten, aber nicht viel Aufwand beim Zusammenstellen und Verwalten einer Python-Installation aufwenden möchten. ActivePython verwendet den regulären pipPaketmanager von Python, bietet jedoch auch einige hundert allgemeine Bibliotheken als verifizierte Pack-Ins sowie einige allgemeine Bibliotheken mit Abhängigkeiten von Drittanbietern wie die Intel Math Kernel Library.

ActivePython-Einschränkungen

Der Ansatz von ActivePython, Pakete mit externen Abhängigkeiten zu verarbeiten, hat einen möglichen Nachteil. Wenn Sie auf eine neuere Version eines Projekts mit komplexen Abhängigkeiten (z. B. TensorFlow) aktualisieren möchten, müssen Sie auch Ihre ActivePython-Installation aktualisieren. In Umgebungen, in denen die Entwicklung in der Regel an eine bestimmte Version eines Projekts gebunden ist, ist dies weniger problematisch. In Umgebungen, in denen die Entwicklung tendenziell die neuesten Versionen verfolgt, kann dies jedoch zu Problemen führen.

PyPy

PyPy ist ein Ersatz für den CPython-Interpreter und verwendet die Just-in-Time-Kompilierung (JIT), um die Ausführung von Python-Programmen zu beschleunigen. Abhängig von der ausgeführten Aufgabe können die Leistungssteigerungen dramatisch sein. 

PyPy-Anwendungsfälle

Eine häufige Beschwerde über Python im Allgemeinen und CPython im Besonderen ist die Geschwindigkeit. Standardmäßig läuft Python viele Male langsamer als C, manchmal Hunderte Male langsamer. PyPy JIT kompiliert Python-Code in Maschinensprache und bietet im Durchschnitt eine 7,7-fache Beschleunigung gegenüber CPython. Einige Aufgaben werden bis zu 50-mal schneller ausgeführt. 

Das Beste daran ist, dass der Entwickler nur wenig bis gar keine Anstrengungen unternehmen muss, um diese Gewinne freizuschalten. Tauschen Sie CPython gegen PyPy aus, und zum größten Teil sind Sie fertig.

PyPy-Einschränkungen

PyPy hat mit „reinen“ Python-Anwendungen immer die beste Leistung erbracht. Python-Pakete, die mit C-Bibliotheken wie NumPy verbunden sind, haben sich aufgrund der Art und Weise, wie PyPy die nativen binären Schnittstellen von CPython emuliert hat, nicht so gut geschlagen. Im Laufe der Zeit haben sich die Entwickler von PyPy jedoch mit diesem Problem befasst und PyPy weitaus kompatibler mit den meisten Python-Paketen gemacht, die von C-Erweiterungen abhängen. Kurz gesagt, die Unterstützung für C-Erweiterungen ist immer noch begrenzt, aber weitaus weniger als früher.

Ein weiterer möglicher Nachteil von PyPy ist die Größe der Laufzeit. Die CPython-Kernlaufzeit unter Windows mit Ausnahme der Standardbibliothek beträgt ca. 4 MB, während die PyPy-Laufzeit ca. 32 MB beträgt. Beachten Sie auch, dass PyPy den 2.x-Zweig von Python seit langem betont hat, sodass PyPy für Python 3.x derzeit nur für Windows in einer 32-Bit-Beta-Testversion verfügbar ist. (PyPy ist in 64-Bit-Versionen für Python 2.x und 3.x für Linux und MacOS verfügbar.)

Jython

Die JVM (Java Virtual Machine) dient neben Java als Laufzeit für eine Vielzahl von Sprachen. Die lange Liste enthält Groovy, Scala, Clojure, Kotlin und, ja, Python über das Jython-Projekt.

Jython-Anwendungsfälle

Jython kompiliert Python 2.x-Code in JVM-Bytecode und führt das resultierende Programm auf der JVM aus. In einigen Fällen wird ein von Jython kompiliertes Programm schneller ausgeführt als sein CPython-Gegenstück, jedoch nicht immer.

Der größte Vorteil von Jython ist die direkte Interoperabilität mit dem Rest des Java-Ökosystems. Java wird noch häufiger verwendet als Python. Durch das Ausführen von Python auf der JVM können Python-Entwickler auf ein riesiges Ökosystem von Bibliotheken und Frameworks zugreifen, die sie sonst nicht verwenden könnten. Aus dem gleichen Grund ermöglicht Jython Java-Entwicklern die Verwendung von Python-Bibliotheken. 

Jython-Einschränkungen

Der größte Nachteil von Jython ist, dass es nur den 2.x-Zweig von Python unterstützt. Die Unterstützung für Python 3.x befindet sich in der Entwicklung, ist aber schon seit einiger Zeit. Bisher wurde nichts veröffentlicht.

Beachten Sie auch, dass Jython zwar Python in die JVM bringt, Python jedoch nicht in Android. Da es derzeit keinen richtigen Port von Jython für Android gibt, kann Jython nicht zum Entwickeln von Android-Anwendungen verwendet werden.

IronPython

So wie Jython eine Implementierung von Python in der JVM ist, ist IronPython eine Implementierung von Python in der .Net-Laufzeit oder CLR (Common Language Runtime). IronPython verwendet die DLR (Dynamic Language Runtime) der CLR, damit Python-Programme mit der gleichen Dynamik ausgeführt werden können, die sie in CPython ausführen.

Anwendungsfälle für IronPython

IronPython ist wie Jython eine Brücke. Der große Anwendungsfall ist die Interoperabilität zwischen Python und dem .NET-Universum. Bestehende .Net-Assemblys können mithilfe der nativen Python-Import- und Objektmanipulationssyntax in IronPython-Programme geladen werden. Es ist auch möglich, IronPython-Code in eine Assembly zu kompilieren und unverändert auszuführen oder aus anderen Sprachen aufzurufen. Beachten Sie jedoch, dass auf die MSIL (Microsoft Intermediate Language) in der Assembly nicht direkt von anderen .NET-Sprachen aus zugegriffen werden kann, da sie nicht mit der Common Language Specification kompatibel ist.

IronPython-Einschränkungen

Wie Jython unterstützt IronPython derzeit nur Python 2.x. Es wird jedoch daran gearbeitet, eine IronPython 3.x-Implementierung zu erstellen.

WinPython

Wie der Name schon sagt, ist WinPython eine Python-Distribution, die speziell für Benutzer von Microsoft Windows erstellt wurde. Die früheren Editionen von CPython für Windows waren nicht gut gestaltet, und es war für Windows-Benutzer schwierig, das Python-Ökosystem voll auszunutzen. Die Windows-Edition von CPython hat sich im Laufe der Zeit verbessert, aber WinPython bietet immer noch viele Dinge, die in CPython nicht zu finden sind.

WinPython-Anwendungsfälle

Die Hauptattraktion von WinPython ist, dass es sich um eine eigenständige Version von Python handelt. Es muss nicht auf dem Computer installiert sein, auf dem es ausgeführt wird. Es muss nur in ein Verzeichnis entpackt werden. Dies macht WinPython nützlich in Fällen, in denen Software nicht auf einem bestimmten System installiert werden kann, in Szenarien, in denen eine vorkonfigurierte Python-Laufzeit zusammen mit den darauf auszuführenden Anwendungen verteilt werden muss oder in denen mehrere Python-Editionen nebeneinander ausgeführt werden müssen ohne sich gegenseitig zu stören.

WinPython bündelt auch eine Reihe von datenwissenschaftlich orientierten Paketen - NumPy, Pandas, SciPy, Matplotlib usw. -, sodass sie ohne zusätzliche Installationsschritte sofort verwendet werden können. Ebenfalls enthalten ist ein C / C ++ - Compiler, da auf vielen Windows-Computern kein Compiler enthalten ist und viele Python-Erweiterungen dies erfordern oder verwenden können.

WinPython-Einschränkungen

Eine Einschränkung von WinPython besteht darin, dass es für einige Anwendungsfälle standardmäßig zu viel enthält. Um dem abzuhelfen, stellen die Entwickler von WinPython für jede WinPython-Edition eine "Null" -Version bereit, die nur die minimalstmögliche Installation des Produkts enthält. Weitere Pakete können später hinzugefügt werden, entweder mit Pythons eigenem pipTool oder mit WinPythons WPPM-Dienstprogramm.

Python Portable

Python Portable ist die CPython-Laufzeit in einem eigenständigen Paket. Es wurde mit freundlicher Genehmigung der PortableDevApps-Sammlung ähnlich eigenständiger Anwendungen bereitgestellt.

Python Portable-Anwendungsfälle

Wie WinPython enthält Python Portable eine Reihe von Paketen für das wissenschaftliche Rechnen - Matplotlib, Numba, SymPy, SciPy, Cython und andere. Ebenso wie WinPython wird Python Portable ausgeführt, ohne dass eine formelle Installation auf dem Windows-Host erforderlich ist. Es kann in jedem Verzeichnis oder auf einem Wechseldatenträger gespeichert werden. Ebenfalls enthalten sind die Spyder IDE und der Pip-Paketmanager von Python, sodass Sie Pakete nach Bedarf hinzufügen, ändern oder entfernen können.

Einschränkungen für Python Portable

Im Gegensatz zu WinPython enthält Python Portable keinen C / C ++ - Compiler. Sie müssen einen C-Compiler bereitstellen, um den mit Cython geschriebenen (und daher zu C kompilierten) Code verwenden zu können.

Experimentelle Python-Distributionen

Diese Distributionen nehmen wesentliche Änderungen an Python vor - entweder weil sie Python als Ausgangspunkt für etwas völlig Neues verwenden oder weil sie strategische Änderungen an Standard-Python vornehmen. Im Großen und Ganzen werden diese Pythons noch nicht für die Produktion empfohlen. 

Wenn Sie auf absehbare Zeit mit einer Python 2.x-Codebasis leben, sollten Sie unseren Artikel über die experimentellen Python-Distributionen lesen, die Python 2.x am Leben erhalten.

MicroPython

MicroPython bietet eine minimale Teilmenge der Python-Sprache, die auf extrem Low-End-Hardware wie Mikrocontrollern ausgeführt werden kann. MicroPython implementiert Python 3.4 mit einigen Unterschieden. Es ist einfach, MicroPython-Code zu schreiben, wenn Sie Python kennen, aber vorhandener Code wird möglicherweise nicht so ausgeführt, wie er ist.

Pycopy