Panel im Browser ausführen mit WASM#

Mit Panel könnt ihr Dashboards und andere Anwendungen in Python schreiben, auf die über einen Webbrowser zugegriffen wird. Normalerweise läuft der Python-Interpreter als separater Jupyter- oder Bokeh-Serverprozess und kommuniziert mit dem JavaScript-Code, der im Client-Browser läuft. Python kann jedoch mit WASM auch direkt im Browser ausgeführt werden, ohne dass ein separater Server erforderlich ist.

Panel nutzt hierfür Pyodide und für das Rendering PyScript.

Konvertieren von Panel-Anwendungen#

Zukünftige Versionen von Panel kann eure Panel-Anwendung aus ein oder mehreren Python-Skripten oder Notebook-Dateien einschließlich Templates mit panel convert in eine HTML-Datei umwandeln. Die einzige Voraussetzungen sind:

Beispiel#

In folgenden Beispiel werden wir das Überblick-Notebook in eine eigenständige HTML-Seite konvertieren mit

$ panel convert overview.ipynb --out pyodide
Column
    [0] Column
        [0] FloatSlider(end=3.0, name='frequency', start=-1.0, value=1.0)
        [1] FloatSlider(end=3.0, name='amplitude', start=-1.0, value=1.0)
        [2] IntSlider(end=100, name='n', start=5, value=200)
    [1] Row
        [0] Matplotlib(Figure, name='interactive00114')
Launching server at http://localhost:40405

Nun könnt ihr http://localhost:40405 in eurem Browser öffnen und die App auszuprobieren:

Pyodide-Beispiel

Ihr könnt nun die Datei pyodide/overview.html in eure Github-Seiten o.ä. einfügen – es ist kein separater Server erforderlich.

Optionen#

Im Folgenden erläutere ich einige der Optionen von panel convert.

--to

Das Format, in das konvertiert werden soll. Es gibt drei Optionen, die jeweils unterschiedliche Vor- und Nachteile haben:

pyodide (Standard)

Die Anwendung wird mit Pyodide im Haupt-Thread ausgeführt. Diese Option ist weniger performant als pyodide-worker, erzeugt aber eine völlig eigenständige HTML-Datei, die nicht auf einem statischen Dateiserver, wie z.B. Github Pages, gehostet werden müssen.

pyodide-worker

erzeugt HTML- und JS-Dateien, die jedoch einen Web-Worker enthält, der in einem separaten Thread läuft. Dies ist die leistungsfähigste Option, aber die Dateien müssen auf einem statischen Dateiserver gehostet werden.

pyscript

erzeugt eine HTML-Datei, die PyScript nutzt. Dies erzeugt eigenständige HTML-Dateien mit <py-env>- und <py-script>-Tags, die die Abhängigkeiten und den Anwendungscode enthalten. Diese Ausgabe ist am lesbarsten und sollte die gleiche Leistung wie die Option pyodide haben.

-out

Das Verzeichnis, in das die Dateien geschrieben werden sollen.

--pwa

Fügt Dateien hinzu, die die Anwendung zu einer Progressive Web-Apps machen.

Progressive Webanwendungen (PWAs) bieten eine Möglichkeit für eure Webanwendungen, sich fast wie eine native Anwendung zu verhalten, sowohl auf mobilen Geräten als auch auf dem Desktop. panel convert hat eine --pwa-Option, die die notwendigen Dateien generiert, um eure Panel- und Pyodide-Anwendung in eine PWA zu verwandeln.

--skip-embed

Überspringt das Einbetten von vorgerenderten Inhalten in der konvertierten Datei.

Panel bettet vorgerenderte Inhalte in die HTML-Seite ein und ersetzt diese durch Live-Komponenten, sobald die Seite geladen ist. Dies kann jedoch sehr lange dauern. Wenn ihr dieses Verhalten deaktivieren und zunächst eine leere Seite rendern möchtet, verwendet die Option --skip-embed.

--index

erstellt einen Index wenn ihr mehrere Anwendungen auf einmal konvertiert, damit ihr leicht zwischen den Anwendungen navigieren könnt.

--requirements

Explizite Anforderungen, die der konvertierten Datei oder einer requirements.txt-Datei hinzugefügt werden sollen.

Standardmäßig werden die Anforderungen aus dem Code abgeleitet.

Wenn eine Bibliothek einen optionalen Import verwendet, der nicht aus der Liste der Importe eurer Anwendung abgeleitet werden kann, müsst ihr eine explizite Liste der Abhängigkeiten angeben.

Bemerkung

panel und seine Abhängigkeiten, einschließlich NumPy und Bokeh, werden automatisch geladen, d.h. die expliziten Anforderungen für die obige Anwendung würden wie folgt aussehen:

$ panel convert overview.ipynb --out pyodide --requirements pandas matplotlib

Alternativ könnt ihr auch eine requirements.txt-Datei bereitstellen:

$ panel convert overview.ipynb --out pyodide --requirements requirements.txt
--watch

Beobachten der Quelldateien.

Eine vollständige Übersicht erhaltet ihr mit panel convert -u.

Tipp

Wenn die konvertierte Anwendung nicht wie erwartet funktioniert, könnt ihr die Fehler meist in der Browser-Konsole finden, s.a. Finding Your Browser’s Developer Console.

Siehe auch

Antworten auf die am häufigsten gestellten Fragen zu Python im Browser findet ihr in den