pyhton-Programm in html einbinden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

hallo!

Ich möchte ein Python-Programm in ein html-Dokument einbinden und es im Browser laufen lassen.
Wie das Serverseitig geht, weiß ich und hab ich per CGI mit Apache auch hinbekommen.
Doch lieg das Pythonprogramm ja auf dem Server und wird auch auf dem Server ausgeführt und nur die Ergebnisse werden dann zum Client gesendet und dort angezeigt.
Da das Python-Programm aber recht CPU-intensiv ist, will ich, dass es vom Client ausgeführt wird. Es kann aber nicht vorrausgesetzt werden, dass der Client auch Python installiert hat.
Ich möchte also eine kompilierte Version (oder bei Pyhton: eine interpretierte Version, wenn man das so nennen kann) in das html-Dokument einbinden.
Wie bekomm ich das hin?

Nochmal zusammengefasst, was passieren soll:

Ich schreibe ein Python-Programm, stell es auf meine Internetseite und verlink es mit einem Button.
Der Nutzer schaut sich die Internetseite an, drückt auf den Button und soll das Ergebnis im Browser angezeigt bekommen.
Der Nutzer hat Python nicht installiert, das Programm soll aber von seinem Rechner bearbeitet werden.


Gruß
Paul
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Um dass so umzusetzen brauchst du einen Python Implementation in Javascript. Wesentlich sinnvoller und einfacher wäre es allerdings einfach den Client Teil in Javascript zu schreiben, deine "Lösung" dürfte sehr ineffizient sein und sehr viel Traffic kosten.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Peak_me: Kurzfassung - geht nicht.

Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.

Warum muss das Programm überhaupt im Browser laufen? Stell' es doch einfach als "normales" Programm zum Download bereit. Für Windows müsstest du dann eine fertige .exe Datei bauen, unter Linux kannst du zumindest bei den halbwegs aktuellesn Distros voraussetzen, dass Python installiert ist. Wie's bei MacOS steht weiß ich nicht...

Gruß, noisefloor
problembär

Peak_me hat geschrieben:Nochmal zusammengefasst, was passieren soll:

Ich schreibe ein Python-Programm, stell es auf meine Internetseite und verlink es mit einem Button.
Der Nutzer schaut sich die Internetseite an, drückt auf den Button und soll das Ergebnis im Browser angezeigt bekommen.
Der Nutzer hat Python nicht installiert, das Programm soll aber von seinem Rechner bearbeitet werden.
Dann muß der Browser den Interpreter zur Verfügung stellen. Macht er - bei JavaScript.

Python in Browsern fände ich auch nett, gibt's aber (noch) nicht.
Also: Lern' JavaScript und schreib' Dein Programm darin. Hab' ich schon mal gemacht. Funktioniert recht gut.

Gruß
BlackJack

Wobei das "CPU intensiv" bedeutet, dass der Browser blockiert wird, wenn man das Programm nicht entsprechend schreibt oder sich als Zielgruppe auf Browser beschränkt, welche die Webworker-API kennen.

Neben JavaScript könnte man sich auch CoffeeScript anschauen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

noisefloor hat geschrieben:Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.
"Genug Leute" ist relativ und die kann man grösstenteils ignorieren.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

DasIch hat geschrieben:
noisefloor hat geschrieben:Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.
"Genug Leute" ist relativ und die kann man grösstenteils ignorieren.
Grundsätzlich kann man die ignorieren, das stimmt. :-)

Gruß, noisefloor
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

noisefloor hat geschrieben:Grundsätzlich kann man die ignorieren, das stimmt. :-)
Ich komme mir ignoriert vor ... :-(
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

/me hat geschrieben:
noisefloor hat geschrieben:Grundsätzlich kann man die ignorieren, das stimmt. :-)
Ich komme mir ignoriert vor ... :-(
Geht mir auch so :(
BlackJack

cofi hat geschrieben:
/me hat geschrieben:
noisefloor hat geschrieben:Grundsätzlich kann man die ignorieren, das stimmt. :-)
Ich komme mir ignoriert vor ... :-(
Geht mir auch so :(
Me Too :-(
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

JavaScript im Browser aufgrund diffuser Ängste abschalten, aber vorschlagen, bedenkenlos ein Python-Programm zu laden und auf dem eigenen Rechner auszuführen? Das geht doch nicht zusammen. Da vertraue ich aber definitiv eher der Sandbox von Chrome als einem beliebigen Programmautor.

Zudem: JavaScript in Chrome ist viel schneller als Python was die reine Ausführungsgeschwindigkeit angeht. Natürlich kann man dort keine in anderen Sprachen geschriebenen Bibliotheken einbinden und auch in Sachen Arithmetik ist Python mit beliebig genauen Ganzzahlen, komplexen Zahlen und Brüchen JavaScript überlegen. Mit Hilfe des Web-Worker-APIs kann man dafür einfach und effizient parallele Berechnungen anstellen. In Python muss man mehrere Prozesse starten - was zugegebenermaßen mit dem multiprocessing-Modul recht einfach ist. Dennoch, es ist mehr Overhead. Ach, uns sollte man auch gleich noch etwas Zeichnen oder anderswie darstellen wollen: Der Browser bietet mit Canvas, SVG und HTML eine plattformübergreifende Lösung, statt auf jeder Plattform ein spezielles GUI-Rahmenwerk installieren und erlernen zu müssen.

Also: Go, JavaScript!

Stefan

PS: Mit Node.js kann man's auch auf dem Server einsetzen ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Grundsätzlich stimme ich zu, aber
sma hat geschrieben:Der Browser bietet mit Canvas, SVG und HTML eine plattformübergreifende Lösung, statt auf jeder Plattform ein spezielles GUI-Rahmenwerk installieren und erlernen zu müssen.
Qt existiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

sma hat geschrieben:PS: Mit Node.js kann man's auch auf dem Server einsetzen ;)
Das ging auch schon mit Rhino ;)

Dass ich es ausgeschaltet habe hat schlicht damit zu tun, dass ich finde eine Website sollte sich es verdienen JS zu nutzen. Es gibt schlicht zu viele Seiten, die sich und ihre Beduerfnisse ueber die des Users stellen.
BlackJack

Ich schliesse mich da cofi an. Es sind keine diffusen Ängste sondern die reale Beobachtung, dass bei eingeschaltetem JavaScript viele Seiten meine CPU auslasten und der Lüfter hoch dreht. Und bei den meisten macht das abschalten von JavaScript anscheinend gar keinen Unterschied ausser dem, dass die CPU nicht mehr ackern muss. Da kommen dann zwar keine diffusen Ängste hoch, aber schon die Verwunderung darüber, wofür die eigentlich Rechenzeit ziehen.

Ich habe deshalb jedenfalls JavaScript grundsätzlich erst einmal ausgeschaltet und erlaube es nur auf Site-Basis wenn eine Webseite das auch wirklich benötigt um zu funktionieren. Und im Zweifelsfall überlege ich mir dann schon, ob eine Webseite die ohne JavaScript nicht funktioniert, es wirklich verdient in die Ausnahmeliste aufgenommen zu werden.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

cofi hat geschrieben:
sma hat geschrieben:PS: Mit Node.js kann man's auch auf dem Server einsetzen ;)
Das ging auch schon mit Rhino ;)

Rhino ist im Vergleich langsamer und IMHO zu langsam, um interessant zu sein. Das ist nur dann interessant, wenn man mit Java auf der JVM interoperieren will. Außerdem kann Rhino nicht ein 5 Zeilen einen HTTP-Server aufsetzen, sondern bräuchte die übliche Java-Servlet-Architektur als Basis.

An Leonidas: Ich schrieb "statt auf jeder Plattform ein spezielles GUI-Rahmenwerk" und Qt ist IMHO so ein spezielles GUI-Rahmenwerk. Ich kann meiner Python-Anwendung nicht eine Qt-Bibliothek beilegen, die dann auf jeder Plattform läuft, sondern es gibt jeweils ein Qt für Windows, Linux, usw. Und wenn die Anwendungen gut aussehen sollen, dann müssen sie auch für jede Plattform nach deren Richtlinien entwickelt werden. Das fängt damit an, dass auf dem Mac der OK-Button auf der anderen Seite von Cancel steht als bei Windows und endet mit der passenden Bildsprache, also wie z.B. die Icons aussehen (die Icons von Eclipse sind z.B. ein Grund, warum die Anwendung trotz nativer Steuerelemente immer wie ein Fremdkörper unter OS/X wirkt). Im Browser haben Anwendungen erstens weniger Chrome und zweitens ist die Erwartungshaltung eine andere -- sie haben mehr Freiheiten,was die grafische Gestaltung angeht.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

sma hat geschrieben:Das fängt damit an, dass auf dem Mac der OK-Button auf der anderen Seite von Cancel steht als bei Windows und endet mit der passenden Bildsprache, also wie z.B. die Icons aussehen (die Icons von Eclipse sind z.B. ein Grund, warum die Anwendung trotz nativer Steuerelemente immer wie ein Fremdkörper unter OS/X wirkt).
Ich erwarte eigentlich dass die Dialoge etc die entsprechenden Icons und Widget-Anodnungen schon mitbringen. Also GTK hat Stock-Icons, damit sollte es durchaus möglich sein, einfach die Gewünschte Art von Icon zu wählen und das Toolkit sucht, ggf. nach Konsultation mit dem aktuellen Theme des Users, das richtige Icon raus.
sma hat geschrieben:Im Browser haben Anwendungen erstens weniger Chrome und zweitens ist die Erwartungshaltung eine andere -- sie haben mehr Freiheiten,was die grafische Gestaltung angeht.
Und du hast auch unterschlagen dass gerade Google Chrome unter *jeder* Platform wie ein Fremdkörper ausschaut.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Leonidas hat geschrieben:Und du hast auch unterschlagen dass gerade Google Chrome unter *jeder* Platform wie ein Fremdkörper ausschaut.
Da ich (gefühlt) 10h am Tag auf Chrome schaue, fällt mir das nicht so auf. Das die Tabs ein bisschen zu spitz für OS/X sind, ist verschmerzbar und das sie nach oben gehen (wie die Safari Beta es auch noch konnte) finde ich sogar besser. Die 3 Icons links der Omnibar und der Schraubenschlüssel recht davon, sind schlicht genug und mehr Chrom hat Chrome dann ja auch nicht.

Stefan
Antworten