Interaktives Shell-Debugging mit Pycharm

74

Ich bin neu bei PyCharm. Ich benutze IDLE schon lange.

Es ist sehr praktisch, Python-Objekte nach der Skriptausführung in IDLE zu verwenden. Gibt es eine Möglichkeit, Skriptobjekte nach ihrer Ausführung mit einer interaktiven Python-Shell mit PyCharm zu verwenden?

Zum Beispiel haben wir ein 'Test'-Projekt mit einer Datei' test.py ':

a = '123'
print a

Nach der Ausführung können wir das Ergebnis erhalten:

123
Process finished with exit code 0

Wie kann ich String 'a' mit interaktiver Shell verwenden?

user1941407
quelle
2
Mögliches Duplikat von Ausführen eines Moduls von der Pycharm-Konsole
Piotr Dobrogost

Antworten:

115

Integrierte Python-Shell für die aktuelle Debugging-Sitzung

  1. Setzen Sie einen Haltepunkt an der gewünschten Zeile in Ihrem Code (dh durch Klicken auf die Rinne) und starten Sie das Debuggen (klicken Sie mit der rechten Maustaste in den Editor und wählen Sie dann Debug myfile.py ... ).
  2. Wenn der Haltepunkt erreicht ist, suchen Sie die Registerkarte Debug > Konsole und klicken Sie dann auf das Befehlszeilensymbol Anzeigen (siehe Screenshot).

Dadurch wird eine Python-Shell aktiviert (beachten Sie das Grün >>>auf dem Screenshot), in der Sie auf alle Variablen im aktuellen Bereich zugreifen und alles tun können, was Sie normalerweise in der Python-Shell tun.

In neueren Pycharm-Versionen erhalten Sie den vollständigen Ipython-Interpreter anstelle der einfachen Python-Shell (wenn Ipython installiert ist).

Aktivieren der Python-Shell für die debuggte App

Das Fenster Ausdruck auswerten

Als bequemere Alternative: Wenn Sie nur einige Variablen untersuchen, auf Mitglieder zugreifen oder Methoden für ein Objekt im Bereich aufrufen müssen, wählen Sie nach Erreichen eines Haltepunkts einen Ausdruck im aktuellen Bereich aus, klicken Sie mit der rechten Maustaste -> Ausdruck auswerten (oder verwenden Sie) Bearbeiten Sie den im Menü unter RunEvaluate Expression...) angezeigten Hotkey nach Bedarf. Sie können einen beliebigen Python-Ausdruck eingeben, wobei die automatische Vervollständigung verfügbar ist. Drücken Sie anschließend die Eingabetaste (oder klicken Sie auf Auswerten ), um das Ergebnis zu überprüfen.

Es werden mehrere und mehrzeilige Ausdrücke unterstützt: Um eine mehrzeilige Version des Dialogfelds "Überprüfen" zu erhalten, klicken Sie auf den Codefragmentmodus oder wählen Sie mehr als eine Codezeile im Editor aus und werten Sie den Ausdruck aus. Sie können vorhandenen Variablen Werte zuweisen (neue können nicht definiert werden) und ganze Codestücke ausführen. Überprüfen von Variablen im aktuellen Bereich

Bewegen Sie den Mauszeiger über Variablen

Um den Wert einer Variablen anzuzeigen, nachdem Sie im Debug-Modus einen Haltepunkt erreicht haben, bewegen Sie den Mauszeiger über die Variable (1-2 Sekunden). Der Wert wird in einem Tooltip angezeigt.

Geben Sie hier die Bildbeschreibung ein

Der Hinweis enthält ein Symbol. Wenn Sie darauf klicken, wird der Inspektor in einem Popup geöffnet.

Geben Sie hier die Bildbeschreibung ein

Für die Variablen im Gültigkeitsbereich wird der Inspektor im unteren Bereich unter Debug > Debugger angezeigt .

Bei pandasDatenrahmen wird im Bereich "Variableninspektor" oder im Hover-Popup ein Link " Ansicht als Datenrahmen" angezeigt. Wenn Sie auf den Link klicken, wird der Datenrahmen im Bereich " Datenansicht" als Tabelle angezeigt .

Aktualisieren

In den neueren Pycharm-Versionen (2019+) sieht das Interpreter-Symbol jetzt anders aus:

Pycharm-Interpreter-Symbol

Auch in der Unittest / Pytest-Debugging-Benutzeroberfläche wird das Symbol zuerst in der Symbolleiste platziert.

ccpizza
quelle
"Befehlszeile anzeigen" ist eine Funktion, die Sie sogar an eine Tastenkombination binden können.
Hartmut P.
2
Das Wechseln der Registerkarten vom Debugger zur Konsole kann mit Alt-Links oder Alt-Rechts erfolgen
Hartmut P.
Ähm, ja, das ist die Antwort
Bellkev
20

Ich fand frühere Antworten von Piga-fetta, Games Brainiac und Kobejohn nützlich, aber nicht befriedigend . Daher biete ich hier eine dritte Option an:

Laden des ausgewählten Codes in die Konsole (mein Vorschlag)

Verwenden Sie Shift+ Alt+ E, um den ausgewählten Code oder die Zeile, in der sich der Cursor in der Konsole befindet, zu laden und sofort auszuführen. Dies hat auch einige Nachteile:

  • Sie müssen die gesamte Datei auswählen, wenn Sie die gesamte Datei ausführen möchten.
  • Der Code wird auch dann weiter ausgeführt, wenn ein Fehler auftritt.

Aber im Gegenzug erhalten wir eine Funktion, die besser ist als IDLE (meiner Meinung nach): Sie können Ihren Code einzeln auswählen.

Lesen Sie hier darüber .

Verwenden von Haltepunkten und Auswerten des Ausdrucks ( Alt- F8) (vorgeschlagen von Piga-fetta)

Dies ist sehr nützlich in großen Anwendungen, in denen wir an bestimmten Stellen im Code debuggen müssen, aber nicht so nützlich für die interaktive Codierung. Das wollen wir also nicht.

Verwenden von Tools -> Python Console ausführen (vorgeschlagen von Games Brainiac und kobejohn)

Dies ist gewünscht, aber etwas umständlich, insbesondere wenn sich das Modul, das wir ausführen möchten, nicht im Stammverzeichnis des Projekts befindet.

elgehelge
quelle
11

Sie können die Python-Konsole einfach in PyCharm 2 und PyCharm 3 verwenden. Sie können sie auch einfach importieren, da Ihr Projektstamm bereits zu Ihrem hinzugefügt wurde PYTHONPATH:

Lassen Sie mich anhand einiger Screenshots demonstrieren:

1. Erstellen einer console.pyDatei im Stammverzeichnis

Geben Sie hier die Bildbeschreibung ein

2. Öffnen Sie die Python-Konsole in PyCharm

Geben Sie hier die Bildbeschreibung ein

3. Variable aus console.pyDatei importieren

Geben Sie hier die Bildbeschreibung ein

Und dort haben Sie Ihre Variable erfolgreich importiert.

Spiele Brainiac
quelle
2
meinst du 'voilà'?
Joaquin
3
Da voilà französisch ist, möchte ich hinzufügen, dass Bratsche Vergewaltigung bedeutet.
Christophe31
@ christophe31 Huch. Entschuldigung, wird sich ändern.
Spiele Brainiac
11

Lassen Sie die Befehlszeile nach der Ausführung offen

Für alle, die immer noch dieses Problem haben: Gehen Sie zum Menü Ausführen / Debuggen, wählen Sie Konfiguration bearbeiten, aktivieren Sie das Kontrollkästchen 'Befehlszeile anzeigen', damit Sie an der Eingabeaufforderung >>> Parameter in die Konsole eingeben und Ihre Funktion testen können.

Ändern Sie die Einstellung nur für die aktuelle Datei

Globale Konfiguration

Um diese Änderung auf alle Ihre .py-Dateien anzuwenden (da dieses Kontrollkästchen nur für die aktuelle Datei gilt, an der Sie arbeiten), gehen Sie zu: Konfiguration bearbeiten. Im Popup sehen Sie links einen Menübaum. Wählen Sie Standard , dann Python, und aktivieren Sie das Kontrollkästchen "Befehlszeile anzeigen". Dies macht es zur Standardeinstellung, wenn Sie eine .py-Datei öffnen (diese Funktion sollte wirklich standardmäßig aktiviert sein!).

Ändern Sie die Einstellung für alle Python-Dateien

Rampkins
quelle
1
Anstelle Show command line afterwardsder Option ist jetztRun with Python console
Rovyko
6

Die beste Antwort fand ich in: Interaktion mit dem Programm nach der Ausführung

Zitiere die Antwort unten:

++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++

Aus der Ausgabe von Python --help:

-i: Interaktiv nach dem Ausführen des Skripts prüfen; erzwingt eine Eingabeaufforderung, auch wenn stdin kein Terminal zu sein scheint; auch PYTHONINSPECT = x

Um die Interpreter-Option in PyCharm festzulegen, gehen Sie zu Ausführen | Konfiguration bearbeiten

++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++

Ich habe es versucht und es funktioniert - verwenden Sie einfach "-i" (ohne Anführungszeichen) als "Interpreter-Optionen". Beachten Sie, dass wenn Sie nur die Standardeinstellungen in den Ausführungs- / Debug-Konfigurationen ändern, diese möglicherweise nicht sofort für Skripte wirksam werden, die Sie bereits zuvor ausgeführt haben. Sie müssen die Konfigurationen dieser Skripte einzeln bearbeiten.

user3308189
quelle
Zumindest in 4.5.4 bietet PyCharm im Dialogfeld "Rund / Debug-Konfigurationen" die Option "Befehlszeile danach anzeigen" an, die ich viel besser fand als die Option -i (Pfeil nach oben für den letzten Befehl funktioniert)
jan-glx
4

Oben nicht erwähnt:

Wenn Sie während der Ausführung eine Variable verwenden möchten , z. B. wenn Sie einen Haltepunkt festlegen und dann mit dem Aufrufen von Funktionen für Objekte im aktuellen Bereich experimentieren, verfügt PyCharm über ein Popup-Fenster " Ausdruck auswerten (Alt-F8) ".

In diesem Fenster können Sie Funktionen aufrufen und die Ausgabe anzeigen. Die Code-Vervollständigung funktioniert auch. Dieses Fenster hat auch einen "Codefragment-Modus". Ich untersuche nur, was es bedeutet. Können Sie hier temporäre Funktionen definieren?

(Ich verwende PyCharm 3.0.1 Community Edition)

Piga-fetta
quelle
2

*aktualisieren

Von Ihrem Update, ich denke , diese Frage SO sieht mindestens eine perfekte Antwort .

Lassen Sie es mich hier etwas mehr Schritt für Schritt schreiben als die Antwort, die ich verlinkt habe.

  • Extras -> Python-Konsole ausführen
  • Importieren Sie Ihr Skript import myscript(ohne .py) (wenn Sie einen Kurznamen möchten, verwenden Sieimport myscript as m
  • (Sie müssen möglicherweise ausführen, main()wenn Sie einen if __name__ == '__main__'Block haben)
  • wie in Ihrer Frage, aist in verfügbarmyscript.a
  • Wenn Sie möchten, führen Sie das Skript erneut mit aus myscript = reload(myscript)

*Original

In PyCharm 3.0 können Sie Folgendes tun:

  • Extras -> Python-Konsole ausführen
  • Extras -> Terminal öffnen (von dem aus Sie Python starten oder was auch immer tun können)

Ist es das, wonach du suchst? Wenn nicht, probieren Sie sie bitte aus und lassen Sie mich wissen, wie sich das von dem unterscheidet, was Sie wollen.

KobeJohn
quelle
Vielen Dank für Ihre Antwort. es ist nicht das, wonach ich suche. Frage wurde aktualisiert
user1941407
0

Eine weitere Alternative besteht darin, einfach denselben Befehl zu verwenden, den Spyder verwendet, um ein Skript "interaktiv" auszuführen:

>>> runfile('myscript.py')

Anschließend können Sie den Variablen-Explorer für die interaktive Konsole öffnen und das Skript erneut ausführen, indem Sie den obigen Befehl erneut ausführen. Sehr ähnlich dem Spyder-Workflow. Bei allen anderen oben genannten Methoden wird eine interaktive Konsolenaufforderung angezeigt, jedoch nicht die Option zum Öffnen eines Variablen-Explorers. Wenn Sie also nach einer solchen Funktion suchen, versuchen Sie es oben.

Arkore
quelle
0

Zusätzlich zu dem Vorschlag, den ich zu Ramkins 'Antwort gemacht habe , können Sie die Datei direkt mit der Konsole ausführen, indem Sie mit der rechten Maustaste in die Datei klicken und auswählen Run File in Console.

Rovyko
quelle