3 Punkte von GN⁺ 2024-08-17 | 1 Kommentare | Auf WhatsApp teilen
  • PyScript ist eine Open-Source-Plattform, mit der sich Python-Code im Browser ausführen lässt und Webseiten selbst zu einer Python-Laufzeitumgebung werden können
  • Sie verbindet die Universalität des Webs mit dem Python-Ökosystem und stellt heraus, dass Python überall dort ausgeführt werden kann, wo es einen Browser gibt
  • Da Apps ohne aufwendige Installation im Browser laufen, lassen sich mit der leicht erlernbaren Syntax von Python webbasierte Apps erstellen
  • Der Code läuft im Browser der Nutzer, wodurch teure Infrastruktur entlastet wird; Ergebnisse lassen sich über eine URL im Web teilen
  • Die Plattform richtet sich sowohl an Einsteiger als auch an fortgeschrittene Nutzer und nennt Einfachheit, Ausdrucksstärke, Skalierbarkeit, Teilbarkeit, Universalität, Sicherheit und Leistungsfähigkeit als zentrale Eigenschaften

Python-Laufzeitumgebung im Browser

  • PyScript ist eine Open-Source-Plattform zum Ausführen von Python im Browser
  • Ein Beispiel ist die Ausführung von Python-Code in HTML über script type="py"
    • Der Beispielcode führt im Browser-Dokument print('You can!') aus
  • Die Verbindung der beiden Technologie-Ökosysteme Web und Python ist die zentrale Ausrichtung von PyScript
    • Das Web ist eine weltweit universelle Computing-Plattform
    • Python ist eine der beliebtesten Programmiersprachen der Welt
  • Entsprechend stellt PyScript die Botschaft in den Vordergrund, dass Python überall dort ausgeführt werden kann, wo es einen Browser gibt

Einstieg und Plattformmerkmale

  • Auf PyScript.com lässt es sich kostenlos und einfach ausprobieren
  • Die Dokumentation richtet sich sowohl an Einsteiger als auch an fortgeschrittene Nutzer
  • In den Community-Ressourcen lässt sich sehen, was man mit PyScript erstellen kann
  • Über Discord kann man sich mit anderen PyScript-Nutzern vernetzen
  • PyScript hebt folgende Eigenschaften hervor
    • Easy: Apps laufen ohne aufwendige Installation im Browser
    • Expressive: Apps lassen sich mit einer so leistungsfähigen, beliebten und leicht erlernbaren Sprache wie Python erstellen
    • Scalable: Der Code läuft im Browser der Nutzer, sodass keine teure Infrastruktur nötig ist
    • Shareable: Anwendungen können über eine URL im Web geteilt werden
    • Universal: Wo ein Browser läuft, läuft auch der Code
    • Secure: Läuft auf der bewährten Computing-Plattform Browser
    • Powerful: Nutzt die Stärken von Web und Python gemeinsam

1 Kommentare

 
GN⁺ 2024-08-17
Hacker-News-Kommentare
  • Falls dich Anwendungsbeispiele interessieren: Das Dallas-Crime-Statistics-Panel-Dashboard kann man hier sehen: https://crimede-coder.com/graphs/Dallas_Dashboard
    Der Start dauert etwa 1 Minute und umfasst die Installation mehrerer Python-Bibliotheken sowie das Laden eines externen 5-MB-Datensatzes. Sobald es einmal läuft, reagiert es ziemlich gut und funktioniert auch auf dem iPhone gut.
    Viele Unternehmen, mit denen ich zusammenarbeite, nutzen die kostenlose Version von Tableau und aktualisieren die Daten manuell, weil die kostenlose Version keine direkte Verbindung zum Datenspeicher erlaubt. Das hier ist eine kostenlose Alternative, und per GitHub Actions werden komprimierte CSV-Dateien erzeugt, die dann aus der Umgebung geladen werden

    • Die Speichernutzung scheint ziemlich hoch zu sein. Laut Browser-Task-Manager nutzt dieser Tab 657 MB, während die meisten anderen Tabs eher bei 25–70 MB liegen
    • Es hieß zwar, „der Start dauert etwa 1 Minute“, aber als ich es auf einem 13-Zoll-iPad-Pro aus Herbst 2023 mit regionalem Breitband und Wi‑Fi geöffnet habe, dauerte es vom Klick auf den Link bis zum Verschwinden des Spinners und der Aktivierung der Filter nur etwa 8 Sekunden
      Ich hätte erwartet, dass es deutlich länger als 8 Sekunden dauert, genug Python zu bootstrappen, um eine Panel-App in Safari auf dem iPad laufen zu lassen. Ein Shift-Reload dauert etwa 6 Sekunden
    • Ich frage mich, was der Flaschenhals war. Über hiesiges Breitband hat es bei mir etwa 20 Sekunden gedauert
    • Ziemlich cool. Für Leute, die sich für Kriminalstatistik-Dashboards interessieren, hier auch das der NYPD: https://compstat.nypdonline.org/
    • Die Seite ist cool. Wenn „viele Unternehmen die kostenlose Version von Tableau nutzen und Daten manuell aktualisieren“, frage ich mich, warum sie nicht etwas wie React oder Angular verwenden
      Ich frage mich auch, ob das Problem darin besteht, dass Python für die Datenanalyse benötigt wird, man es aber wegen der Serverkosten nicht serverseitig ausführen möchte
  • Selbst nach einem Blick auf die Homepage war ich verwirrt, und auch nach dem Lesen der Doku wusste ich nicht genau, was das eigentlich ist
    Als ich ein wenig damit herumgespielt habe, konnte ich „Hello World“ auf einer Website anzeigen lassen. Es sieht aus wie ein Skript, das nach Skripten mit type="py" sucht und sie über Pyodide von Python nach JavaScript transpiliert
    Aber die Demo auf der Homepage ist ein REPL und der Titel spricht von einer „Plattform“, daher bin ich immer noch verwirrt

    • Statt „Python nach JavaScript zu transpilierten“ wirkt es eher so, als würde PyScript Python-Code direkt ausführen. Es verwendet einen nach WebAssembly kompilierten Python-Interpreter und nutzt CPython aus Pyodide oder MicroPython
    • Ich mag es nicht, wenn vage und unscharf definierte Begriffe wie „Plattform“ benutzt werden. Man könnte einfach sagen, es sei ein Framework, das Code in Script-Tags für Python mit Pyodide auswertet
    • Ich habe weder die Doku noch den Source Code wirklich gelesen, aber das js-Paket scheint auf das eigentliche window-Objekt abzubilden und eine API zu sein, die über irgendein Proxy-Objekt DOM-Methoden aufruft
    • Informationen zum Terminal habe ich hier gefunden: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      Ich hatte erwartet, Python in der Browser-Konsole ausführen zu können
  • Worin unterscheidet sich das von Pyodide? https://pyodide.org/en/stable/

    • Pyodide ist eine Portierung von CPython auf die WebAssembly-Plattform. PyScript ist ein Framework, das Pyodide nutzt, um die Entwicklung von Python-Anwendungen im Browser zu ermöglichen. Als Elevator Pitch etwa: „Python in Script-Tags über Pyodide“
    • Das hier verwendet Pyodide. Auch wenn es nicht wirklich ein Transpiler ist, fühlt es sich eher wie ein Transpiler von Python nach JS an und ist dafür gedacht, Browser-Apps in Python zu bauen. Man kann es also als Pyodide + Browser-API sehen
    • Pyodide ist die Laufzeitumgebung
      PyScript kann Pyodide oder MicroPython verwenden, und MicroPython ist tatsächlich ziemlich klein. Auf dieser Laufzeitumgebung bietet PyScript mehr als nur das Ausführen von Python-Code: Es liefert Komfortfunktionen und Verbesserungen der Developer Experience, damit man Python wirklich für Webprogrammierung einsetzen kann
    • Ein Wrapper
  • Ich habe mich in letzter Zeit intensiv damit beschäftigt, mit PyScript Python-CLI-Apps im Browser auszuführen
    Es fühlte sich die ganze Zeit ziemlich hacky an, besonders sobald Abhängigkeiten ins Spiel kamen. Ich konnte Pydantic 2.x nicht verwenden und musste Wrapper-Klassen als Workaround bauen. Ich wollte eigentlich die gesamte Logik in Python-Dateien unterbringen, musste wegen fehlender Funktionen aber einen Teil in JavaScript schreiben
    Wenn man nur eine einfache UI und etwas benutzerdefinierte UI-Logik über vorhandenen Python-Code legen will, kann es in Ordnung sein, aber vielleicht passen Streamlit oder Gradio besser
    GitHub-Repository: https://github.com/data-catering/data-contract-playground
    Website: https://data-catering.github.io/data-contract-playground/

    • Da viele Python-Projekte in Richtung Rust umgebaut werden, wird es unnötig schwierig, Python überall einzusetzen
  • Es ist schwer, echte Anwendungsfälle zu finden. Wenn man Machine-Learning-Modelle ausführen möchte, kann man sie als ONNX bauen: https://onnxruntime.ai/docs/tutorials/web/
    Ich frage mich, ob das effizient ist, um browserbasierte Apps statt mit JS/TS damit zu bauen

    • Manche Leute wollen JS/TS vielleicht einfach nicht anfassen
    • Programmiersprachen sollten von der Deployment-Umgebung getrennt sein
  • Es wäre schön, wenn man in Firefox Skripte schreiben und damit den Browser steuern könnte. Also so, dass die Ausführung in jeder gewünschten Phase erfolgen kann, etwa zum Zeitpunkt eines GET, nach allen GETs oder vor bzw. nach der Auswertung von JavaScript.
    Ich frage mich, ob es ein Tool gibt, das so etwas kann und bei dem zugleich alle Python-Funktionen auf dem Host zugänglich sind.

  • Ist das nicht dasselbe Konzept wie Brython? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

  • Ein bisschen Eigenwerbung: Ich habe mit PyScript ein etwas meinungsstärkeres reaktives Frontend-Framework gebaut. Es ist ein wenig von Vue.js inspiriert: https://puepy.dev

  • Früher habe ich damit einen Markdown-Renderer gebaut. Den sehr einfachen Quellcode kann man hier sehen: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    Die App läuft auf Mobilgeräten wohl nicht besonders gut, sollte aber auf dem Desktop in Ordnung sein. Ich habe diesen Code in einer Blog-Anwendung verwendet, die ich mit Django geschrieben habe.

  • Bei jeder WASM-Konfiguration ist es auf Dauer sehr lästig, dass man wegen CORS viele APIs nicht aufrufen oder keine Websites scrapen kann, was eine große Einschränkung ist.
    Natürlich ist CORS wichtig, um Dinge wie XSS zu verhindern, aber es wäre schön, wenn es einen anderen Weg gäbe, als einen Proxy aufzusetzen, der CORS entfernt. Dann bleibt einem eine IP, die mit höherer Wahrscheinlichkeit blockiert wird als eine Wohn-IP.

    • Gilt dieses Problem nur, wenn durch COOP und COEP Cross-Origin-Isolation aktiviert ist?