python - shown - pycharm sciview



Probleme beim Anzeigen von Interpreter(IPython) nach dem Ausführen von Programm in PyCharm (1)

Um ehrlich zu sein, haben Sie einfach versucht, eine neuere Version von PyCharm auszuführen und Ihre Einstellungen zu importieren? 3.5 ist ziemlich veraltet (Ich bin auf 4.5.3 selbst, neueste Version ist 5.0) und ich glaube, dass mehr Unterstützung für IPython in den neueren Versionen angeboten wird. https://www.jetbrains.com/pycharm/help/ipython.html . Vor allem, wenn Sie ein Student sind, könnte es nicht schaden, es zu versuchen. Ich weiß, dass ältere Versionen von PyCharm fehlerhafter waren als die letzten Versionen.

Ich habe PyCharm Professional Edition 3.5 5.0 konfiguriert

Verwenden Sie IPython wenn möglich

und in meinen Run / Debug Konfigurationen setze ich

danach Dolmetscher zeigen

Ich benutze den Interactive Interpreter sehr und ich mag IPython sehr, aber es gibt einige Dinge, die mir an der Art und Weise, wie dies in PyCharm behandelt wird, nicht gefallen:

  • Jede input() in meinen Programmen gibt leere Zeichenfolgen zurück.

  • Wenn ein Fehler auftritt, kann ich außerdem nicht mehr mit dem Programm interagieren. (Sie können, wenn Sie ein Python-Programm mit dem Flag -i ausführen)

  • Zwischen der letzten Zeile in der Konsole und der aktuellen Zeile ist viel Platz

In IPython ist die Eingabeaufforderung ...: in einem Codeblock nicht um 2 Leerzeichen eingerückt und daher nicht auf die Eingabeaufforderung In [?]: Ausgerichtet.

  • Wenn ein Fehler auftritt, bekomme ich etwas wie dieses Traceback (most recent call last): File "C:\Program Files (x86)\PyCharm\helpers\pydev\pydev_run_in_console.py", line 69, in <module> globals = run_file(file, None, None) File "C:\Program Files (x86)\PyCharm\helpers\pydev\pydev_run_in_console.py", line 29, in run_file pydev_imports.execfile(file, globals, locals) # execute the script File "C:\Program Files (x86)\PyCharm\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:/Users/ca/Python/Bundeswettbewerb Informatik/Aufgabe2/Ameisen.py", line 133, in <module> function_that_caused_error() Ich brauche / möchte den Traceback nicht von den Interna sehen.

  • Beim Ausführen einer Datei muss IPython gestartet werden, was einige Sekunden in Anspruch nimmt, auch wenn ich die Interpretation danach nicht verwende. Ich möchte, dass PyCharm IPython startet, nachdem das Programm beendet wurde oder wenn ich das Debugging import IPython; IPython.start_ipython() Sie können IPython in einer interaktiven Konsole starten, indem Sie import IPython; IPython.start_ipython()

Es gibt noch andere kleinere Dinge, die ich nicht mag

  • Wenn IPython gestartet wird, druckt es viel Text auf der Konsole. Ich möchte nichts davon sehen, außer vielleicht die Versionsnummer (Sie können dies normalerweise mit der Option --no-banner tun, aber das Hinzufügen zu den Interpreter-Optionen funktioniert nicht)

  • Wenn Sie etwas eingeben und auf "Nach Up drücken, wird das, was ich geschrieben habe, durch das letzte Element meiner Geschichte ersetzt, anstatt es durch das letzte Element meiner Geschichte zu ersetzen, das mit dem beginnt, was ich eingegeben habe. Plain IPython tut dies.

  • Ich hätte gerne eine automatische Code-Vervollständigung, ohne Ctrl + Space in der Konsole drücken zu müssen

Die "Probleme" sind nach Wichtigkeit geordnet. Weiß jemand, wie man einige von ihnen ändert? Ich könnte aufhören, IPython zu verwenden, das das zweite, das dritte und das vierte Problem lösen würde, aber die anderen würden immer noch bestehen bleiben. All dieses Verhalten (mit Ausnahme des IPython-Krams) ist in PyScripter sehr gut implementiert.

BEARBEITEN:

Ich habe Lösungen für die ersten beiden Probleme und das Problem mit dem IPython-Banner gefunden. Die Quelle für den interaktiven PyDev-Interpreter (der von PyCharm verwendet wird) befindet sich unter Windows in C:\Program Files (x86)\PyCharm\helpers\PyDev (Pfad ist natürlich C:\Program Files (x86)\PyCharm\helpers\PyDev ).

Das erste Problem kann also durch Bearbeiten der Datei _pydev_imps/_pydev_execfile.py gelöst werden. Zeilenumbruch Zeile 18 ( exec(compile(contents+"\n", file, 'exec'), glob, loc) ) in einem try ... except Block mit folgendem Code als Exception Handler import traceback; traceback.print_exc() import traceback; traceback.print_exc() . Dadurch wird Ihr Python-Programm beendet, wenn ein Fehler auftritt und Sie anschließend mit der Variablen interagieren können.

Problem 2 kann durch Bearbeiten des Feuers pydev_run_in_console.py gelöst werden. Fügen Sie diesen Import am Anfang der Datei hinzu: from pydev_console_utils import StdIn und fügen Sie sys.stdin = StdIn(interpreter, host, client_port) nach der Zeile 61 ein, bevor Sie den Import hinzufügen.

Um das Problem mit dem Banner zu lösen, müssen Sie hier die neueste Version der PyDev-Quelle herunterladen und die Dateien pydev_ipython_console und pydev_ipython_console_011 durch ihre neueren Versionen ersetzen. In der neueren Version der ersten Datei hat die Methode __init__ in Zeile 22 ein Argument namens show_banner mit dem Standardwert True . Ändern Sie dies in False .