Categories: Open SourceSoftware

Python im Browser

Python ist zwar die beliebteste Programmiersprache der Welt, aber im Gegensatz zum anderen Spitzenreiter JavaScript kann man Python-Code nicht im Browser ausführen.

Auf der PyCon 2022, der jährlichen Konferenz für die Gemeinschaft der Python-Fans und dem ersten persönlichen Treffen für Python-Mitwirkende seit 2019 aufgrund der Pandemie haben die Entwickler die Idee, Python-Code im Browser auszuführen, erneut aufgegriffen.

Im Browser hat Python die Kompilierung zur WebAssembly (Wasm)-Laufzeit nicht unterstützt, einem weithin unterstützten IC3-Standard für Webanwendungen, der in Rust, C, C++ und Go geschriebenen Code in ein Binärformat kompiliert, wodurch sich Webanwendungen außerhalb des Browsers eher wie eine Desktop-Anwendung verhalten können.

Auf der PyCon 2022 haben der CPython-Entwickler Christian Heimes und sein Kollege Ethan Smith ausführlich beschrieben, wie sie den CPython-Hauptzweig in die Lage versetzt haben, nach WebAssembly zu kompilieren. CPython, kurz für Core Python, ist die Referenzimplementierung, von der andere Python-Distributionen abgeleitet sind.

CPython lässt sich nun mit Hilfe von Emscripten zu Wasm kompilieren, einer Toolchain, die in C oder C++ geschriebene Projekte zu Node.js oder Wasm-Laufzeiten kompiliert.

Die Python Software Foundation hob die Arbeit in einem Blog-Post hervor: „Python kann auf vielen Plattformen ausgeführt werden: Linux, Windows, Apple Macs, Mikrocomputer und sogar Android-Geräte. Aber es ist eine weithin bekannte Tatsache, dass Python nicht geeignet ist, wenn man Code in einem Browser ausführen will – man muss auf JavaScript zurückgreifen“, heißt es dort. Das könnte sich jetzt aber ändern.

Die Stiftung stellt zwar fest, dass die Cross-Kompilierung zu WebAssembly aufgrund fehlender Module in der Python-Standardbibliothek noch „höchst experimentell“ ist, doch die PyCon 2022 hat gezeigt, dass die Gemeinschaft zunehmend daran interessiert ist, Python zu einer besseren Sprache für den Browser zu machen.

Einige Leute in der Python-Gemeinschaft haben sich gefragt, ob Python zu sehr in Richtung Data Science gezogen wurde, was seine Nützlichkeit als Allzweckprogrammiersprache untergraben könnte. Neben dem Browser ist ein weiterer Schwachpunkt von Python die Tatsache, dass für die Ausführung auf mobilen Geräten oder sogar für jede Anwendung – selbst auf dem Desktop – eine grafische Benutzeroberfläche erforderlich ist.

Aber selbst im Bereich der Datenwissenschaft gibt es den Wunsch, Python browserfreundlicher zu machen. Peter Wang, Mitbegründer und CEO von Anaconda, dem Hersteller der beliebten Anaconda-Python-Distribution für Data Science, erklärte gegenüber ZDNet, dass es „unglaublich umständlich sei, mit Python Anwendungen zu entwickeln und zu vertreiben, die eine grafische Benutzeroberfläche haben“.  Wangs Firma stellte ein neues Tool vor, an dem sie gearbeitet hat, um Python für Data Science in den Browser zu bringen.

Wang kündigte PyScript auf der PyCon 2022 an und beschrieb es als „ein System zur Einbindung von Python in HTML (wie PHP)“. Es ermöglicht Entwicklern, Python-Code in HTML zu schreiben und auszuführen und Javascript-Bibliotheken in PyScript aufzurufen. Mit diesem System kann eine Website vollständig in Python geschrieben werden.

PyScript baut auf Pyodide auf, einer Portierung von CPython, einer Python-Distribution für den Browser und Node.js, die auf WebAssembly und Emscripten basiert.

Pyodide ist eine interessante Entwicklung für Python. Es war Teil des inzwischen eingestellten Mozilla Iodide-Projekts und wurde 2018 von Michael Droettboom entwickelt. Ab 2021 lebt Pyiodide als unabhängiges Open-Source-Projekt weiter. Es richtet sich an Data-Science-Anwender und ermöglicht statistische und visuelle Modellierungsarbeiten im Browser unter Verwendung wichtiger Python-Bibliotheken für Data Science wie Numpy, Pandas und Matplotlib.

„Pyodide macht es möglich, Python-Pakete mit Micropip im Browser zu installieren und auszuführen. Jedes reine Python-Paket mit einem auf PyPI verfügbaren Rad wird unterstützt“, heißt es im Pyodide-Projekt. Im Wesentlichen kompiliert es Python-Code und wissenschaftliche Bibliotheken mit Emscripten zu WebAssembly.

Das Pyodide-Projekt hat vor einem Monat die Version 0.20 veröffentlicht. Sie wurde auf Python 3.10, die neueste Hauptversion von Python, aktualisiert und bringt Geschwindigkeitsverbesserungen in Firefox und Chrome.

Die Python Software Foundation merkt an: „PyScript baut derzeit auf Pyodide auf, einem Drittanbieter-Projekt, das Python in den Browser bringt und an dem die Arbeit begann, bevor Heimes mit seiner Arbeit am CPython-Hauptzweig begann. Mit Heimes‘ Änderungen an Python 3.11 wird diese Arbeit nur noch einfacher werden.“

Auf der PyCon 2021, also vor einem Jahr, räumte der Schöpfer von Python, Guido van Rossum, ein, dass Python großartig für die Backend-Webentwicklung sei, überließ aber das Frontend JavaScript. Warum sollte man Python in Bereichen überfordern, die von anderen Sprachen gut bedient werden, wenn Python seine Stärken in der Datenwissenschaft ausspielen kann?

„Ich finde es nicht so schlimm, dass verschiedene Sprachen unterschiedliche Ziele haben müssen. Ich meine, niemand fragt Rust, wenn man Rust im Browser schreiben kann; zumindest scheint das auch kein sinnvolles Ziel für Rust zu sein. Python sollte sich auf die Anwendungsbereiche konzentrieren, in denen es gut ist, und für das Web ist das das Backend und für die wissenschaftliche Datenverarbeitung“, sagte van Rossum damals.

Jakob Jung

Recent Posts

Sicherheitsrisiko Schatten-IoT

Schatten-IT im Internet der Dinge (IoT) verbirgt zahlreiche Risiken. Mirko Bülles, Director TAM bei Armis,…

17 Stunden ago

Das Lizenzmodell Microsoft New Commerce Experience

Microsofts New Commerce Experience ist umstritten. Ob es Chancen für Cloud Service Provider gibt oder…

17 Stunden ago

Digitale Gesundheitsakte revolutioniert die Pferdezucht

Der Oldenburger Pferdezuchtverband zählt zu den führenden Zuchtverbänden Deutschlands. Mit der digitalen Pferdeakte sorgt er…

18 Stunden ago

Die Hummel sticht

Laut Cybersecurity-Forschern wird der Bumblebee (Hummel) Loader schnell zu einem Favoriten von Ransomware-Banden. Er steht…

18 Stunden ago

Linux: Rust wird bald integriert

Linus Torvalds ist vorsichtig optimistisch, Rust in die nächste Version des Linux-Kernels zu integrieren, wahrscheinlich…

2 Tagen ago

Google öffnet Earth Engine für alle

In den letzten zehn Jahren hatten Forscher in der akademischen und gemeinnützigen Welt über die…

2 Tagen ago