Python in HTML einbetten: PyScript machts möglich
Das von Anaconda ins Leben gerufene Projekt bietet ein HTML-Interface, um sowohl Python-Code als auch eine interaktive Kommandozeile einzubinden.
Im Rahmen der PyCon 2022 hat Anaconda, das Unternehmen hinter der gleichnamigen Python-Distribution, PyScript angekĂĽndigt. Das Projekt bettet Python in HTML ein und bietet wie JavaScript eine direkte Anbindung an das Document Object Model (DOM) der Webseite.
Laut der Kurzzusammenfassung im Readme auf GitHub soll PyScript eine pythonische Alternative zu einfach zu verwendenden Programmiertools und -frameworks wie Scratch oder JSFiddle sein. Es setzt auf Standard-HTML und bietet eigene Tags zum Einbetten von Code, den es an einen Python-Interpreter ĂĽbergibt.
Pyodide als Grundlage
Der zugrundeliegende Stack besteht im Wesentlichen aus WebAssembly, Emscripten und Pyodide. Letzteres Projekt hatte Mozilla 2019 erstmals öffentlich vorgestellt, um Python in den Browser zu bringen. Die maßgebliche Motivation war das ebenfalls bei Mozilla gestartete, aber inzwischen eingestellte Iodide-Projekt als webbasiertes Werkzeug zur Datenanalyse im Stil von Jupyter Notebooks. Mozilla hat im Frühjahr 2021 Pyodide in ein eigenständiges Projekt überführt.
Emscripten ist eine quelloffene Compiler-Toolchain, die auf LLVM setzt, um Code nach WebAssembly zu kompilieren. Schließlich ergänzt das Open-Source-Projekt CPython on WASM (python-wasm) die Toolchain. Zahlreiche Python-Pakete wie NumPy, pandas und scikit-learn lassen sich aus PyScript verwenden.
Eingebetteter Code und interaktive Befehle
HTML-Seiten mĂĽssen vor dem Verwenden von PyScript-Tags folgende zwei Zeilen enthalten:
<link rel="stylesheet"
href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js">
</script>
Der eigentliche Python-Code lässt sich nun über das Tag <py-script>
einbinden, wie in folgendem Beispiel aus dem Examples-Ordner auf GitHub:
<body>
Hello world! <br>
This is the current date and time, as computed by Python:
<py-script>
from datetime import datetime
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")
</py-script>
</body>
Wie bei JavaScript ist es zudem möglich, Code in externen Python-Dateien in den Tags einzubinden:
<py-script src="/mein_code.py"></py-script>
Daneben können HTML-Seiten auch eine REPL (Read Eval Print Loop) enthalten, auf der Anwenderinnen und Anwender im Browser interaktiv Python-Code ausführen können:
<py-repl id="my-repl" auto-generate="true"> </py-repl>
In den Kinderschuhen
Derzeit befindet sich PyScript in einer frühen Phase. Der Blogbeitrag, der parallel zu der Vorstellung auf der PyCon 2022 erschienen ist, spricht von einer Demonstration dafür, dass die Technik reif genug ist, die größere Vision des Projekts umzusetzen. Das Framework soll aber auch langfristig bewusst einfach nutzbar bleiben, und der Blogbeitrag spricht von "dem Minecraft für Softwareentwicklung".
Weitere Details sowie einige Programmierbeispiele finden sich im GitHub-Repository. Die zum Schreiben von HTML-Seiten mit eingebettetem Code erforderlichen Dateien lassen sich von der Projektseite herunterladen, die zudem eine Installationsanleitung bietet.
Zwei Wochen vor der internationalen PyCon 2022 fand in Berlin die deutsche PyConDE & PyData statt, auf der zwar PyScript noch nicht zu sehen war, die aber ebenfalls Python im Browser thematisierte.
(rme)