Wie Betten Sie ein Python-interpreter auf einer website
Ich bin versucht zu bauen, ein Bildungs-coding-Website, ähnlich wie Codecademy, aber ich bin ehrlich gesagt ratlos, welche Schritte unternommen werden sollten. Könnte ich wies in die richtige Richtung, darunter auch ein einfaches python-interpreter in einer webapp?
- Sie können sehen, wie es funktioniert in ipython notebook: sudo apt-get install ipython ipython notebook
- Ich bin nicht der erfahrenste mit web-Entwicklungs-tools. Ich bin der Hoffnung, zu lernen, so viel wie ich kann von einem Projekt mit einem ehrgeizigen Ziel!
- Haben Sie einen Blick auf diese: doc.pypy.org/en/latest/sandbox.html
- Oh, das wäre ziemlich hilfreich. IPython Notebook site bietet sogar ein how-to auf ausgeführt eine öffentliche notebook server!
- Vielen Dank, @ChristopheD. Werde ich Lesen Sie über es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer option ist die Verwendung von PyPy erstellen einer Sandbox-python. Es begrenzt die Eingriffe von außen jemand das machen könnte.
Sobald Sie eingerichtet ist, Ihre website würde die code-Quelle, schicken Sie es über ajax an den webserver, und der server führt den code in einen Teilprozess einer Sandbox-python-Instanz. Würden Sie auch in der Lage sein, den Prozess zu beenden, wenn es länger gedauert hat, als sagen wir 5 Sekunden. Dann kehren Sie die Ausgabe wieder als Antwort an den client.
Sehen Sie diese links, um Hilfe zu einem PyPy-sandbox:
http://doc.pypy.org/en/latest/sandbox.html
http://readevalprint.com/blog/python-sandbox-with-pypy.html
Erstellen Sie eine vollständig interaktive REPL wäre noch mehr beteiligt. Sie würden halten müssen, um einen Dolmetscher zu Leben, um zu jedem client auf dem server. Dann akzeptieren ajax "Linien" der Eingabe und führen Sie Sie durch die interp durch die Kommunikation mit dem Laufenden Prozess, und kehren Sie die Ausgabe.
Insgesamt nicht trivial. Sie brauchen etwas starkes dev-Fähigkeiten zu tun, diese bequem. Sie kann diese Aufgabe ein bisschen einschüchternd, wenn Sie gerade erst lernen.
Gibt es mehr zu tun als Sie denken.
Das große problem ist, dass Sie nicht lassen Sie die Menschen das ausführen von beliebigem Python-code auf Ihrem webserver. Was passiert zum Beispiel, wenn Sie tun
So klar müssen Sie zum ausführen dieses Python-code sicher. Aber dann Sie haben das problem der Sicherung Python, das ist im Grunde unmöglich, weil, wie dynamisch es ist. Und so werden Sie wahrscheinlich haben die Python-shell in einer virtuellen Maschine, die kommt mit seinen eigenen Kopfschmerzen.
Haben Sie gesehen, z.B. http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=?
Einer letzten option für diese ist die Verwendung repl.
Diese option ist genial, weil der Compiler werden mit JavaScript so die Zusammenstellung und Ausführung in der Benutzer-Seite, was bedeutet, dass der server frei von Schwachstellen.
Haben Sie Compiler für: Python ist3, Python, Javascript, Java, Ruby, PHP...
Ich empfehlen Sie stark, um zu überprüfen, Ihre Website auf http://repl.it
Blick in LXC-Container. Sie haben eine ziemlich Coole api, die Sie verwenden können, um leichtgewichtige linux-Container. Man könnte den Teilprozess Befehle innerhalb des Containers, so werden die Endbenutzer könnten nicht Durcheinander mit Ihrem Haupt-server.