Mozilla bringt Python in den Browser

Pyodide ist ein Python-Stack für den Browser, der Bibliotheken wie NumPy und Pandas verwenden kann.

In Pocket speichern vorlesen Druckansicht 50 Kommentare lesen
Mozilla bringt Python in den Browser
Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Die Entwickler von Pyodide haben ihr Projekt vorgestellt, das Python-Anwendungen im Browser ermöglicht. Der Python-Interpreter ist in erster Linie darauf ausgelegt, Data-Science-Anwendungen direkt im Browser auszuführen. Pyodide setzt auf emscripten und WebAssembly und arbeitet mit verbreiteten Python-Libraries wie NumPy und Matplotlib zusammen.

Anregung für die Entwicklung kam durch das Mitte März vorgestellte Mozilla-Projekt Iodide, ein webbasiertes Werkzeug zur Datenanalyse. Der Hintergrund ist, dass JavaScript als Sprache im Browser für Data-Science-Projekte wenig geeignet ist. Zum einen mangelt es an passenden Libraries und Funktionen, zum anderen genießt es bei Data Scientists keinen guten Ruf, die häufig gewohnt sind mit Python zu arbeiten.

Mit einem Demo-Notebook können Entwickler im Browser experimentieren.

Pyodide ist ein Python-Interpreter, der den uneingeschränkten Einsatz der Programmiersprache sowie für Data Scientists wichtige Libraries ermöglichen soll und gleichzeitig den Zugriff auf die Web-APIs gewährt. Unter der Haube setzt Pyodide auf emscripten und WebAssembly. Ersterer ist ein Compiler zum Übersetzen von C/C++-Code in WebAssembly. Die Basis für Pyodide ist das Open-Source-Tool cpython-emscripten, das CPython-Code mit emscripten in eine asm.js-Bibliothek übersetzt.

emscripten bietet Funktionen, mit denen sich regulärer Python-Code häufig wohl ohne Anpassungen direkt im Browser starten lässt, darunter ein virtuelles Dateisystem, auf das der Python-Interpreter zugreift. Mittelfristig erwägt das Team statt der Funktionen in emscripten auf das WebAssembly System Interface (WASI) umzusteigen, um dem Python-Interpreter Zugriff auf Systemfunktionen zu geben.

Zum Ausführen von Python-Code im Browser benötigen Entwickler den als WebAssembly-Code kompilierten Python-Interperter, JavaScript-Code von emscripten zum Emulieren der Systemfunktionen sowie ein Paket mit der Standardbibliothek von Python – sowie potenziell weiteren Libraries und Erweiterungen. In Kombination ergibt sich damit ein recht großer Download für den ersten Start. Bei künftigen Sessions kann der Browser auf die unveränderten Elemente freilich aus dem eigenen Cache zugreifen.

Pyodide erlaubt das Verwenden verbreiteter Python-Bibliotheken wie NumPy, Matplotlib, Scipy und Pandas. Auch wenn ein guter Teil von Python-Code wohl problemlos mit Pyodide im Browser läuft, gibt es einige Einschränkungen. Unter anderem funktioniert Threading noch nicht, aber das Team arbeitet an einer Umsetzung mit WebAssembly Threads. Weniger Hoffnung hat es bei dem Low-Level-Network-Interface Socket, das sich vermutlich nicht im Browser umsetzen lässt.

Die Performance in der Virtual Machine von JavaScript bleibt freilich hinter der nativen Implementierung zurück und ist laut den Angaben der Entwickler in Firefox bis zu zwölfmal langsamer und in Chrome bis zu sechzehnmal, was aber für die interaktive Exploration der Daten nach wie vor ausreichend performant sein soll.

Das Konvertieren der Datentypen ist in einigen Fällen nicht trivial. Für einige Fälle kommen Proxys in der jeweils anderen Sprache zum Einsatz: Ein pyproxy dient als Wrapper für ein Python-object in JavaScript. Umgekehrt ist ein jsproxy ein Wrapper für JavaScript-Object in Python.

Das Konvertieren von Datenytpen zwischen Python und JavaScript ist nicht immer geradlinig möglich.

(Bild: Mozilla)

Proxys kommen ebenfalls zum Einsatz, um über Python auf Teile der Web-APIs zuzugreifen. Der Wunsch der Pyodide-Macher wäre eine separate Schnittstelle zur Abstraktion zum Zugriff unter anderem auf das Document Object Model (DOM) analog zu jQuery. Daher sind interessierte Entwickler aufgerufen, sich auf Gitter zu melden.

Weitere Details zum Pyodide-Projekt und der Entstehungsphase lassen sich dem Blogbeitrag auf Mozilla Hacks entnehmen. Ein Blick auf die auf GitHub geführten Packages für Pyodide zeigt, welche Libraries für Pyodide verfügbar sind. Zum Ausprobieren bietet sich das in Iodide umgesetzte Demo-Notebook an. (rme)