Seite 1 von 1

Python in HTML

Verfasst: Samstag 31. Januar 2009, 14:54
von Juribaro
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

Verfasst: Samstag 31. Januar 2009, 14:59
von BlackVivi
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...

Verfasst: Samstag 31. Januar 2009, 17:46
von Dauerbaustelle
Nein, es gibt keine Pythonapplets (jedenfalls nicht weit verbreitet) - sowas kannst du allerdings mit Moonlight machen.

Verfasst: Sonntag 1. Februar 2009, 10:13
von sma
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

Verfasst: Sonntag 1. Februar 2009, 13:28
von BlackVivi
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 ;)

Verfasst: Sonntag 1. Februar 2009, 16:59
von Leonidas
Vielleicht hat ja schon jemand etwas ähnliches zu Ruby2JS/Red für Python gemacht?

Verfasst: Sonntag 1. Februar 2009, 18:31
von sma
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

Verfasst: Sonntag 1. Februar 2009, 19:15
von Leonidas
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.

Verfasst: Samstag 7. Februar 2009, 13:33
von sma
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