🇺🇸 English | 🇯🇵 日本語 | 🇨🇳 简体中文 | 🇪🇸 Español | 🇧🇷 Português (Brasil) | 🇰🇷 한국어 | 🇩🇪 Deutsch | 🇫🇷 Français
Ein browserbasiertes Python-Playground, das vollständig clientseitig läuft.
Client Side Python ist ein browserbasiertes Python-Playground auf Basis von Pyodide.
Der gesamte Python-Code wird vollständig innerhalb deines Browser-Tabs ausgeführt (WebAssembly, kein Backend), sodass dein Code deine Maschine nie verlässt.
Dadurch eignet es sich gut für:
- Das schnelle Ausprobieren kleiner Python-Snippets
- Das Vorführen von Python-Grundlagen im Unterricht oder in Workshops
- Das Experimentieren mit einfachen numerischen oder Skript-Aufgaben in einer sicheren Sandbox
- Das Zeigen, wie WebAssembly + Pyodide „echtes“ Python in den Browser bringen können
-
Vollständig clientseitige Ausführung
- Verwendet Pyodide, um CPython in WebAssembly auszuführen.
- Standardmäßig sind weder Server, Datenbank noch Authentifizierung erforderlich.
-
Einfacher Code-Editor + Konsole
- Textbereich für Python-Code.
- Konsolenbereich, der
stdoutundstderranzeigt. - Schaltflächen: Run, Stop, Clear, Load Sample, Copy Output.
-
Sanfter „Stop“-Mechanismus
- Die Ausführung ist mit einem Soft-Cancel-Token umhüllt.
- Wenn du Stop drückst, wird der aktuelle Lauf logisch abgebrochen, sodass verspätete Ergebnisse ignoriert werden, anstatt die UI zu beschädigen.
-
Responsives Web-UI
- Erstellt mit Expo / React Native Web und Material UI-Komponenten.
- Das Layout passt sich an unterschiedliche Viewport-Größen an (Desktop / Tablet).
-
Deterministische CI über Docker
- Jest-Tests laufen in einem Docker-Container mit
docker-compose.test.yml. - GitHub-Actions-Workflows für CI und Docker-basierte Tests sind enthalten.
- Jest-Tests laufen in einem Docker-Container mit
-
Automatische Bereitstellung auf GitHub Pages
- Ein GitHub-Actions-Workflow baut das Expo-Web-Bundle und veröffentlicht es für den Branch
mainauf GitHub Pages.
- Ein GitHub-Actions-Workflow baut das Expo-Web-Bundle und veröffentlicht es für den Branch
Beim ersten Laden der App passiert Folgendes:
- Pyodide wird von einem CDN geladen.
- Die Pyodide-Laufzeit wird initialisiert und
runPythonAsyncwird verfügbar gemacht. - Benutzerdefinierte Handler für
stdoutundstderrwerden angebunden, damit Python-Ausgaben in die Konsole auf der Seite gestreamt werden. - Ein einfaches Ausführungs-Token wird verwendet, um einen soft Stop zu implementieren:
- Jeder Lauf erhöht eine interne
execId. - Wenn ein Lauf mit einer veralteten
execIdendet, wird seine Ausgabe verworfen. - Dadurch wird verhindert, dass veraltete Ergebnisse älterer Läufe die Konsole verschmutzen.
- Jeder Lauf erhöht eine interne
All das geschieht im Browser, ganz ohne Backend-API-Aufrufe.
- Docker und Docker Compose
# set environment variables:
export REACT_NATIVE_PACKAGER_HOSTNAME=${YOUR_HOST}
# Build the image
docker compose build
# Run the container
docker compose updocker compose -f docker-compose.test.yml up --build --exit-code-from frontend_test - Apache License 2.0
