Mir fehlte schon immer eine möglichst einfache Umgebung für Pythonexperimente. Am PICTS Netzwerktreffen des VSA habe ich das erste mal eine Pythonumgebung gesehen, welche vollständig im Browser läuft und in diesem Fall sogar komplett aus einer einzigen HTML Datei geladen wird.
Das kann ja dann nicht so schwer sein! Ich habe allerdings etwas mehr Ansprüche als eine reine Pythonumgebung. Viele Funktionen sind ja in Bibliotheken einfacher abzurufen. Darum habe eine Reihe von Bibliotheken hinzugefügt so, dass sie nach Bedarf aktiviert werden können. Ich habe zudem eine Auswahl getroffen. Bibliotheken welche im Alltag oft verwendet werden und im Browser flüssig laufen. Sogar einige KI-Module haben es in die Auswahl geschafft.
Beachte: Alle Bibliotheken sind extern gehostet und ich habe sie nicht einzeln geprüft. Wenn du also was Prooduktives entwickelst, prüfe die Quelle der Bibliothek und mache es besser nicht hier im Browser. Dafür ist die ganze Entwicklungsumgebung nur eine einzelne HTML Datei, die man einfach so kopieren kann. Achtung, der Chatbot geht nur bei mir, Token kosten Geld 🙂
Ich habe noch einen kleinen Chatbot gesponsert. Der weiss bereits, welche Bibliotheken verfügbar sind du musst ihn also nicht instruieren sondern kannst direkt loslegen.
Und fairerweisen noch die Info:
So wirklich viel getestet habe ich die Umgebung noch nicht, ausserdem habe ich sie einfach mit Gemini zusammengevibed. Verschiedene Beispiele haben schon mal funktioniert aber ein bisschen Debugging braucht es wahrscheinlich schon noch. Auch eine Eingabezeile damit man mit dem laufenden Programm interagieren kann fehlt noch.
Was sicher wichtig ist zu wissen:
Gewisse Standardlibraries funktionieren im Web so nicht, weil sie nur für den Desktop gemacht sind. So zum Beispiel tkinter. Wenn also dein Bot tkinter vorschlägt wird das nicht funktionieren. Ich versuche den Onsite Bot entsprechend so zu instruieren, dass er den Code auf diese Umgebung anpasst. Sobald der einigermassen zuverlässig läuft wird der Systemprompt hier im Artikel erscheinen. Mein Bot hier weiss grundsätzlich schon alles was ich hier beschrieben habe, da kannst du einfach losprompten.
Du findest die Pythonumgebung hier hinter diesem Link

Hier ist noch der aktuelle Systemprompt des eingebauten Bots
Du bist ein spezialisierter Python-Code-Assistent für eine serverlose Browser-Sandbox (Pyodide). Du erstellst Code und dokumentierst diesen. Füge deiner Antwort an, welche der unten vorgegebenen Bibliotheken du konkret verwendest.
Es gibt keine Server-Infrastruktur und keinen Internetzugriff für unregistrierte Pakete.
Strikte Einschränkung der Bibliotheken:
Du darfst ausschließlich die Python-Standardbibliothek (ohne tkinter) sowie die folgenden 21 registrierten Bibliotheken verwenden. Schlage niemals Code vor, der andere externe Pakete importiert:
pillow (PIL) – Bildbearbeitung
pypdf – PDF-Verarbeitung
scipy – Wissenschaftliche Berechnungen & Audio (.wav)
scikit-image (skimage) – KI-Bildsegmentierung & Filter
scikit-learn (sklearn) – Machine Learning & Algorithmen
opencv-python (cv2) – Computer Vision & Tracking
openpyxl – Excel-Dateien (.xlsx) erzeugen
python-docx (docx) – Word-Dokumente (.docx) erzeugen
xlrd – Altes Excel-Format (.xls) lesen
pyyaml (yaml) – YAML-Parser
numpy – Vektormathematik
pandas – Datenanalyse & DataFrames
matplotlib – Diagramme plotten
seaborn – Statistische Visualisierungen
sympy – Formeln & symbolische Algebra
requests – HTTP-Anfragen (über Browser-Fetch)
beautifulsoup4 (bs4) – Web-Scraping
regex – Erweiterte Textmustersuche
jinja2 – Template-Engine
tqdm – Fortschrittsbalken für Schleifen
python-dateutil (dateutil) – Komplexe Zeit-Berechnungen
Laufzeit- und Datei-Regeln:
GUI-Verbot: Nutze niemals tkinter. Grafische Ausgaben müssen über Dateien oder matplotlib erfolgen.
Datei-Uploads: Wenn der Nutzer eine Datei verarbeiten möchte, liegt diese für dein Skript im virtuellen Ordner /target/ (z. B. /target/daten.xlsx). Schreibe den Code so, dass der Dateiname nicht vorgegeben sein muss
Datei-Downloads: Um dem Nutzer das Ergebnis zurückzugeben, musst du am Ende des Skripts die global bereitgestellte Funktion js_download(virtueller_pfad, download_name) aufrufen.
Fragen und Antworten
Warum muss man die Bibliotheken manuell aktivieren?
Wenn ich alle von Anfang an aktivieren würde dann würde das ewig dauern und wahrscheinlich den Speicher ans limit bringen. Mit dem Auswählen hast du kurze ladezeiten und bist flexibel. Falls du tatsächlich so eine App produktiv einsetzen willst und auch noch so im browser, kannst du sonst die Umgebung einfach ein bisschen anpassen damit die benötigten Bibliotheken automatisch geladen werden.
Welches Sprachmodell verwendet der Bot?
Openais GPT mini in der aktuellsten Version. Das hat sich bei mir über längere Zeit einfach bewährt als kostengünstig, schnell und gut genug für die meisten Aufgaben. Das Pendant bei Google wäre gemini flash oder Claude Sonnett, die würden alternativ genau so gut gehen. Ich nehme hier meist Openai, weil mein Gegenstück auf meiner Webseite dafür schneller Updates erhält und das ganze darum etwas zuverlässiger ist.


