Python in HTML

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
Juribaro
User
Beiträge: 1
Registriert: Samstag 31. Januar 2009, 14:42

Hallo zusammen,

ich bin neu hier, und da ich mich in nächster Zeit mit Python befassen möchte ist dieses Forum wohl am besten für meine Frage geeignet.

Meine Frage ist, ob es, ähnlich wie in Java, die Möglichkeit gibt Python in HTML einzubinden.

Ich hab die Suchfunktion benutz, aber nicht gefunden was meine Frage beantworten würde. (Zugegeben, ich bin ein blutiger Anfänger, daher hab ich die Antwort möglicherweise nur nicht erkannt).

MfG

Juribaro
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Meinst du wie Javascript, Clientseitig? Da gibts ein paar Ansätze, musst du selber suchen. Aber du hast ja gesagt "wie java"... Also meinst du wohl eingebettetes Python in eine Template Engine. Da gibt es die berühmtesten Vertreter mit Genshi, Cheetah und Jinja. [wiki]Template-Engines[/wiki] zeigt dir, wie sie aufgebaut sind...
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Nein, es gibt keine Pythonapplets (jedenfalls nicht weit verbreitet) - sowas kannst du allerdings mit Moonlight machen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Moonlight ist (noch) nicht kompatibel mit Silverlight 2 und erst das erlaubt es, andere .NET-Sprachen (also IronPython) einzubinden. Daher muss man entweder Silverlight 2 selbst nehmen (und auf Linux-Support verzichten) oder aber man nimmt Java und benutzt dann Jython, ein in Java implementiertes Python 2.2 (2.5-Version in Dauerbeta). Beides aber nicht großartig, weil da megabyteweise erst mal Python-Interpreter zusätzlich zur Java bzw. Silverlight Runtime geladen werden muss.

Wer's sich selbst bauen will, dem empfehle ich meine eigene recht kompakten Python 1.4-Implementation in Java (der leider alle Standardmodule fehlen und die auch keine Schnittstelle zu Java hat) oder ich bringe noch mal die Idee ins Spiel, dass man einen Python-Interpreter für ActionScript und damit für Flash braucht ;)

Stefan
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

sma hat geschrieben:Wer's sich selbst bauen will, dem empfehle ich meine eigene recht kompakten Python 1.4-Implementation in Java (der leider alle Standardmodule fehlen und die auch keine Schnittstelle zu Java hat) oder ich bringe noch mal die Idee ins Spiel, dass man einen Python-Interpreter für ActionScript und damit für Flash braucht ;)
Dafür wäre Alchemy wesentlich nützlicher ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Vielleicht hat ja schon jemand etwas ähnliches zu Ruby2JS/Red für Python gemacht?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Leonidas hat geschrieben:Vielleicht hat ja schon jemand etwas ähnliches zu Ruby2JS/Red für Python gemacht?
Würde mich interessieren. Mir ist noch nichts untergekommen.

Zu Alchemy habe ich nur http://code.google.com/p/lua-alchemy/ gefunden, auch wenn ich mir einbilde, ein Video gesehen zu haben, wo ein Python-Beispiel gezeigt wurde. Ich vermute daher, es ist nicht so einfach, ein doch so komplexes Programm wie einen Ruby- oder Python-Interpreter zu portieren.

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

sma hat geschrieben:
Leonidas hat geschrieben:Vielleicht hat ja schon jemand etwas ähnliches zu Ruby2JS/Red für Python gemacht?
Würde mich interessieren. Mir ist noch nichts untergekommen.
Habe jetzt grade PEJS gefunden. Das ist vom Ansatz her ähnlich zu dem was HotRuby macht.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mir ging es ja eher um ActionScript (bzw. ABC) für Flash denn um JavaScript. Für JavaScript und V8 hatte ich mir einen Prototypen gebaut, der zu Python äquivalentes JavaScript laufen lässt und war von der Performance enttäuscht.

Abgesehen davon, dass ich in JS kein "int" habe, sondern nur Fließkommazahlen, wird ein einfaches "3+4" zu "op_add(3, 4)" mit

Code: Alles auswählen

function op_add(a, b) {
    var ab = a.__coerce__(b);
    if (ab != null) {
        a = ab[0];
        b = ab[1];
    } else {
        var ba = b.__coerce__(a);
        if (ba != null) {
            b = ba[0];
            a = ba[1];
        }
    }
    if (!((isBuiltin(type(a)) || isNewStyle(type(a))) && 
        isSubtype(type(b), type(a)) &&
        type(b).__dict__.has_key("__radd__")) {
        var r = b.__radd__(a);
        if (r !== NotImplemented) {
            return r;
        }
        var r = a.__add__(b);
        if (r !== NotImplemented) {
            return r;
        }
    } else {
        var r = a.__add__(b);
        if (r !== NotImplemented) {
            return r;
        }
        var r = b.__radd__(a);
        if (r !== NotImplemented) {
            return r;
        }
    }
    throw new TypeError
}
Number.prototype.__add__ = function(other) {
    if (type(other) == Number) {
        return this + other;
    }
    return NotImplemented;
}
und das killt wie gesagt die Performance komplett. Von Attribut-Zugriffen will ich gar nicht erst anfangen - das ist dank Properties ähnlich komplex.

PYJS ist interessant, aber je nachdem, wie ihr Subset aussieht, ist es sehr einfach oder sehr herausfordernd. Lässt man z.B. yield, try/except und das Überladen von Operatoren weg, ist es trivial. Während try/except noch auf die Exceptions von JavaScript abgebildet werden könnte, macht yield echte Probleme und die __xxx___-Methoden fressen die gesamte Performance.

Das Projekt implementiert IMHO kein Python, sondern ein JavaScript mit Python-Syntax.

Stefan
Antworten