Seite 1 von 1

Gibt es eine SLIME-like Remote-Python-Console?

Verfasst: Sonntag 14. Dezember 2008, 11:12
von sma
Gibt es für Python etwas ähnliches es wie der Emacs mit SLIME für CommonLisp nutzt? Dort lässt man im Hintergrund ein Lisp-System laufen, in dem ein spezieller Swank genannter Server läuft. Dieser Server kann Anfragen des Editors beantworten, damit der Editor auf diese Weise einen interaktiven Modus simulieren kann.

Ich habe gerade mal ausprobiert, wie ich eine Art Python Console in einem TextMate-Fenster realisieren kann, doch dazu starte ich bei jedem RETURN einen neuen Python-Prozess.

Nun könnte ich mir, vielleicht basierend auf XMLRPC, selbst so einen Server bauen, dem ich Textschnipsel schicken kann, die dieser dann ausführt, dabei sys.stdout abfängt und das wieder zurückschickt. Doch sollte das Programm eine weitere Eingabe benötigen, wird es schnell recht aufwendig und vielleicht hat ja jemand schon eine Art Remote-Console für Python gebaut, die jemand von euch kennt.

Stefan

Verfasst: Sonntag 14. Dezember 2008, 12:48
von Leonidas
SLIMES RPC-Protokoll macht bischen mehr als nur Strings umher schicken, siehe das Bild im Blog hier (ist aus den Folien des Vortrages in der Münchner Lisp-Group. Dadurch sind einige Dinge direkt in Elisp realisierbar und sind so wesentlich schneller als wenn man alles in Swank verlagern würde. Wenn man sowas in Python so nachbauen würde, würde man vim mit +python nehmen oder emacs mit pymacs und dort via PyRO oder ähnlichem auf einen Backend-Prozess zugreifen.

Verfasst: Sonntag 14. Dezember 2008, 16:30
von sma
Interessanter Vortrag. Danke.

Was ich wollte, war dann doch recht einfach und ich hatte das noch schnell vor dem Mittagessen zusammengehackt: http://gist.github.com/35667

Ein bisschen umgeschrieben funktioniert das jetzt bei mir auch in einem TextMate-Fenster und liese sich jetzt noch weiter ausbauen. Ich könnte mir z.B. die Historie merken und in ihr blättern oder sie abspeichern. Leider lässt sich TextMate nicht so gut programmieren - IMHO - ich kann AFAIK nicht einfach den Cursor programmgesteuert irgendwo hinbewegen.

Stefan