Interaktives Ausführen von Python/Ruby aus Notepad++ heraus (NppExec-Konsole)

Interaktives Ausführen von Python/Ruby aus Notepad++ heraus (NppExec-Konsole)

Ich habe die NppExec-Konsole in Notepad verwendet, um Python- und Ruby-Skripte mit python script_name.pyoder auszuführen ruby script_name.rb, und größtenteils funktioniert dies gut: Die Ausgabe wird in die NppExec-Konsole umgeleitet und ich muss Notepad++ nicht verlassen, um mein Skript zu testen.

Was ich jedoch wirklich gerne tun würde, ist, eine interaktive Sitzung von Python oder Ruby von der NppExec-Konsole aus auszuführen. Zum Beispiel einfach pythonoder einfach irbnicht zulasseninteraktivin der Konsole arbeiten.

Hatte jemand damit Glück?

Wenn dies möglich wäre, würde es bedeuten, dass man Funktionen/Methoden in einem bestimmten Skript innerhalb der Konsole ausführen könnte, ohne Notepad++ verlassen zu müssen.

Antwort1

Das scheint nicht möglich zu sein. Aus der NppExec-Dokumentation zitiere ich:

NppExec ist NICHT ...

  • NppExec ist kein Konsolenemulator. NppExec leitet die Ausgabe des laufenden Prozesses an sein Konsolenfenster um und kann die Eingabe des Konsolenfensters (mit einigen Einschränkungen) an den laufenden Prozess umleiten. Die Konsole von NppExec ist kein „echtes“ Konsolenfenster (tatsächlich verwendet sie die RichEdit-Steuerung für die Texteingabe/-ausgabe) und bietet keinen Konsolenbildschirmpuffer. Daher muss eine Konsolenanwendung, die einen „echten“ Konsolenbildschirmpuffer erfordert, in ihrem eigenen Konsolenfenster ausgeführt werden (mit dem Befehl NPP_RUN).

  • NppExec ist kein Befehlsinterpreter. NppExec versteht Befehle wie „copy“, „call“, „for“ usw. nicht, da es weder eine „echte“ Konsole noch ein Konsolenemulator ist. NppExec verfügt jedoch über eine eigene interne Implementierung von Befehlen wie „cls“, „cd“, „dir“, „echo“, „set“ („env_set“) und führt andere, spezifische Befehle ein. Sie können auch „cmd /c“ verwenden, um jeden cmd-Befehl in NppExec auszuführen.

  • NppExec ist kein Compiler. NppExec ermöglicht Ihnen die Verwendung externer Tools und Compiler zum Verarbeiten/Kompilieren Ihrer aktuellen Datei, kann dies jedoch nicht selbst tun. Keine Zauberei hier :)

Da kein Konsolen-Bildschirmpuffer vorhanden ist, kann die NppExec-Konsole nicht als „echte“ Konsole gelten.

Sie sollten lieber eine Anwendung ausprobieren, die für das interaktive Testen von Code entwickelt wurde, wie zum BeispielIPythonfür Python.

Antwort2

Bearbeiten(Hinzufügen des ungepufferten Schalters -u für bessere Leistung)

Es stellt sich heraus, dass dies für Python mit dem -iSchalter (inspect) und dem Schalter -u (ungepufferte Ausgabe) möglich ist, trotz der Tatsache, dassNpp_Exec ist keine echte Konsole:

    python -u -i $(FULL_CURRENT_PATH)

Dadurch wird die aktuelle Datei in der Npp_Exec-Konsole im Python-Interpreter ausgeführt und durch den -iSchalter wird direkt in den interaktiven Modus gesprungen, wo Sie dann fortfahren könnenaus der NppExec-Konsoleum alle vom Skript bereitgestellten Variablen oder Definitionen zu prüfen/verwenden.

Wenn Sie Ihre Npp_Exec-Konsole so einstellen, dass sie dem aktuellen Verzeichnis mithilfe von folgt Notepad++ Menu > Plugins > NppExec > Follow $(CURRENT_DIRECTORY, ist die Lösung sogar noch einfacher:

    python -u -i $(FILE_NAME)

(Hinweis: Für Ruby ist dies noch eine offene Frage, da Ruby und sein interaktiver Interpreter irbzwei separate Binärdateien sind und keinen Schalter zum Überprüfen des Typs zu haben scheinen, sowie einige andere Merkwürdigkeiten beim Ausführen von Skripts, die sowohl Eingabe als auch Ausgabe haben...)

Antwort3

Ich bin neu bei Python und habe versucht, Python-Programmierung zu lernen, und aufgrund einiger Probleme in IDLE (wie Zeilennummerierung) habe ich beschlossen, Notepad++ zu verwenden und natürlichNPP_EXECPlugin, um das Kompilieren von Code zu erleichtern. Ich hatte Erfolg bei einigen anderen, wie dem Kompilieren*.vbsDateien, aber dieses Mal war es für Python aus irgendeinem Grund kein Erfolg, trotz aller hier und anderswo vorgestellten Lösungen.

Ich habe es zuerst python -u "$(FULL_CURRENT_PATH)"in NPP_EXEC versucht. Bei einigen Python-Skripten war das Ergebnis zufriedenstellend, aber als ich mich weiter mit Python beschäftigte, stieß ich erneut auf ein Problem, da die Ausgabe nicht meinen Erwartungen entsprach. Ich bin hier auf die Lösung von [AKE] gestoßen. Leider hat bisher keines davon für mich funktioniert.

Nehmen wir den folgenden Code an.

#-------------------------------------------------
mein_dict = dict({'Alice':1, 'John':2, 'Emma':3})
name = raw_input("Geben Sie den Namen ein: ")
Name = Name.großschreiben()

wenn Name in my_dict:
    #hier etwas tun
sonst: print("Der Name existiert nicht!")
#-------------------------------------------------

Ich habe beides verwendet:

python -u "$(VOLLSTÄNDIGER_AKTUELLER_PFAD)"
Und
python -u -i "$(VOLLSTÄNDIGER_AKTUELLER_PFAD)"

aber das Ergebnis ist immer das gleiche, egal was Sie als Namen im obigen Code eingeben, die Ausgabe ist immer:
[Der Name existiert nicht!]

Ich glaube, es liegt am -uSchalter, also habe ich versucht, ihn wegzulassen und einfach -iso zu verwenden

python -i "$(VOLLSTÄNDIGER_AKTUELLER_PFAD)"

Es stellte sich heraus, dass es funktionierte, aber dieses Mal müssen Sie, nachdem Sie die Ausgabe beobachtet haben, Ctrl+ drücken C, um den Prozess manuell zu beenden und Python zu beendeninteraktivModus in der NPP_EXEC-Konsole.

Ich kenne einige andere Workarounds wie die Verwendung von Notepad++LaufenMenü und fügen Sie dort einige Befehle hinzu oder verwenden SiePyKKWPlugin (obwohl diese beiden fast identische Verfahren ausführen, indem sie Python auf cmd umleiten), aber keines davon war so praktisch, wie ich es wollte. Vielleicht erwarte ich zu viel von NPP_EXEC, da es in seiner Hilfe keine echte Konsole hat, aber ich wollte alles in Notepad++ machen, ohne mich mit anderen Prozessen wie IDLE oder cmd oder … herumschlagen zu müssen.

Trotzdem wäre ich für jede Hilfe dankbar, wenn jemand weitere erfolgreiche Erfahrungen gemacht hätte.

verwandte Informationen