2017-10-19 2 views
0

Ich habe festgestellt, dass, wenn ich den gleichen Teil von Python 3 Code in PyCharm laufen, die Registerkarte "Ausführen" manchmal die vollständige Traceback und Fehlermeldung zeigt, aber andere Zeiten zeigen nur "Prozess beendet mit Exit-Code 1" .PyCharm Run --- Warum zeigt es manchmal eine Rückverfolgung und Fehler und manchmal nicht?

1) Kann jemand erklären, warum das passiert?

2) Gibt es eine Möglichkeit, PyCharm zu zwingen, immer die vollständige Traceback- und Fehlermeldung anzuzeigen?

Edit: Hier ist ein Beispiel, das das Verhalten zeigt, das ich gesehen habe. Als ich das 20 Mal ausgeführt habe, habe ich die Traceback und Fehler zweimal und die "Exit Code 1" Nachricht selbst 18 mal. Um dieses Verhalten zu sehen, muss der Code möglicherweise etwas drucken, bevor die Ausnahme ausgelöst wird. Wenn ich nur die Ausnahme (ohne die aufrufende Callme()) auslösen, bekomme ich immer die Traceback und Fehler.

#!/usr/bin/python3 

def callme(): 
    print('doing some stuff!') 

def main(): 
    for i in range(1,100): 
     callme() 
    raise Exception('Something is went wrong!') 

if __name__ == '__main__': 
    main() 

Edit 2: Ich habe gerade festgestellt, dass die Antwort darauf wahrscheinlich sein muss. Das PyCharm Run-Anzeigefenster zeigt nur eine bestimmte Anzahl von Zeilen an. Wenn die Anzahl der Zeilen, die gedruckt werden können, geringer ist als die Anzahl der gedruckten Objekte, werden einige Zeilen nicht angezeigt. Also, tatsächlich sind die Traceback-Zeilen immer noch da, aber sie wurden gerade vor einigen der anderen Ausgaben gedruckt und sind daher nicht im Fenster sichtbar. Ich habe herausgefunden, dass ich tatsächlich zu ihnen springen kann (auch wenn sie nicht sichtbar sind), indem ich den kleinen Knopf neben dem Run-Fenster drücke.

Bearbeiten 3: Sieht aus wie ich nicht die einzige Person bin, die dieses Problem hatte: PyCharm output error messages interspersed with console output. How to fix this?

Nach dieser Frage, es als Fehler gemeldet wurde (https://youtrack.jetbrains.com/issue/PY-16143), aber (so weit wie möglich erzählen) es wurde nicht repariert. Irgendwelche Ideen, wie man das umgehen kann?

Für diejenigen, die gefragt haben: Ich benutze PyCharm Community Edition 2016.3.2 und mein Betriebssystem ist CentOS 6.6.

+0

[MCVE] (https: // stackoverflow.com/help/mcve) kann helfen zu beantworten –

+0

Sie müssen Dinge wie das Betriebssystem angeben, auf dem Sie sind. Haben Sie auch versucht, das Skript direkt über die Befehlszeile auszuführen, anstatt PyCharm mit 'python3 file.py' zu verwenden? – Nifled

+0

Danke @ElRuso, die MCVE half mir herauszufinden, was los war! – EPH

Antwort

1

ich dieses Verhalten auf Ubuntu bestätigen 16.04 PyCharm 2017.02.03
Wenn Sie jedes Mal, Stack-Trace sehen wollen, versuchen Sie diesen Code und trotzdem stop using print for debugging :)

import logging 

def callme(): 
    logging.info('doing some stuff!') 

def main(): 
    for i in range(1,100): 
     callme() 
    raise Exception('Something is went wrong!') 

if __name__ == '__main__': 
    logging.basicConfig(level='INFO') 
    main() 
+0

Ich habe diese Lösung getestet und es funktioniert in meiner Version von PyCharm. Ich wusste nicht einmal, dass es eine Holzfällerbibliothek gab! Dies scheint sicherlich viel besser als das Drucken überall. Vielen Dank! – EPH

Verwandte Themen