Python-Programmierumgebungen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
schneitzmaster
User
Beiträge: 94
Registriert: Freitag 26. Oktober 2012, 15:35
Wohnort: Hamburg

Hallo liebes Forum,
auch wenn meine Frage vielleicht schon oft beantwortet wurde stell ich sie trotzdem nochmal da ich auch nach 2 Tagen intensivem Suchen nicht zufriedenstellend fündig geworden bin.
Bisher habe ich meine Python-Programme in einem Texteditor geschrieben und dann per copy&paste in die Kommandozeile eingefügt bzw. die ganze Datei einlesen lassen (ich verwende ABAQUS eine FE-Software die Python als scriptsprache verwendet).
Nun mit steigender Komplexität dieser Modelle muss ich vermehrt verschachtelte Schleifen bemühen. Dabei gestaltet sich mit meiner bisherigen Vorgehensweise die Fehlersuche sehr mühsehlig.

Nun meine Frage: Gibt es ein einfaches, Matlab-Editor-ähnliches Programm für Python mit dem man Breakpoints setzen kann und sich durch den Code iteriert und dabei quasi on-the-fly Variablen in der Kommandozeile manipulieren und ausgeben?

Ich habe jetzt schon einiges versucht (Eric4 - stürzt immer ab, Spyder - funzt nicht richtig...) Das einzig vielversprechende war die Eclipseerweiterung pydev. Doch da muss man jedes mal ein Projekt erzeugen und kann nicht einzelne python-Dateien bearbeiten.
Hab ich da etwas übersehen? Es muss doch so einen Matlab-ähnlichen Editor mit analoger Funktionalität zum Fehlersuchen geben, oder?
Mit welchen Umgebungen sucht ihr den Quellcode nach mögliche Fehlern ab?
BlackJack

@schneitzmaster: ``print``- beziehungsweise `logging`-Ausgaben und Unit-Tests. Alles mit einem einfachen Texteditor.
Benutzeravatar
Torx
User
Beiträge: 2
Registriert: Freitag 18. Januar 2013, 22:59

Wenn du ein Linux System zur Hand hast (kannst du ja auch als VM laufen lassen) kannst du den konsolenbasierten Python debugger nutzen

Code: Alles auswählen

python -m pdb <Skript>
Das <Skript> musst du natürlich durch den namen deiner Datei austauschen.

Grüße
BlackJack

@Torx: Warum nur auf einem Linuxsystem? Der gehört zur Standardbibliothek. Und wenn man das gerne grafisch haben möchte, gibt es `WinPDB` als externe Anwendung. Hier nicht vom Namen täuschen lassen: Das Programm ist plattformunabhängig.

Meiner Erfahrung nach ist so eine einzelschrittweise Fehlersuche in Highlevel-Programmiersprachen weit weniger nützlich als in maschinennahen, wo man deutlich weniger abstrakt als in Python programmieren muss und auch einfache Dinge in vielen kleinen Schritten ausdrücken muss, in die sich leicht Fehler einschleichen, welche man nicht mit ein paar ``print``\s aufdecken kann.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@ schneitzmaster: ein Texteditor Deiner Wahl + Terminal (hier BBEdit, OS X). Wenn 'print' nicht mehr weiterhilft, dann den pdb einsetzen:
http://docs.python.org/2/library/pdb.html#module-pdb

Code: Alles auswählen

import pdb
...
pdb.set_trace()
...
Bei set _trace() stoppt Dein Programm und geht im Terminal in den interaktiven Modus über. Das ist ganz praktisch wenn man zuvor die Stelle hat eingrenzen können, an der Dinge schief gehen und denen man mit 'print' nicht auf die Schliche kommt (oder zu kommen glaubt).
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@BlackJack: Eine einzelschrittweise Suche vielleicht nicht, aber ist man einmal im Debugger, hat man fast den ganzen Interpreter in der Hand. Und das wiederum finde ich sehr praktisch.

Ergaenzend zu kbr: Die "uebliche" Vorgehensweise ist `import pdb; pdb.set_trace()`, also nicht die beiden Anweisungen zu trennen, sondern komplett als Breakpoint anzusehen. Damit hat man am Ende weniger Probleme beim aufraeumen.
Benutzeravatar
Torx
User
Beiträge: 2
Registriert: Freitag 18. Januar 2013, 22:59

@BlackJack: Achso, ich wusste gar nicht das Windows da auch Tools für hat. Ich arbeite und programmiere halt nur unter Linux - da ist wohl die gewohnheit mit mir durch :roll:

Grüße
schneitzmaster
User
Beiträge: 94
Registriert: Freitag 26. Oktober 2012, 15:35
Wohnort: Hamburg

Hi Leute,
danke für eure Hinweise.
Ich benutze jetzt Eclipse mit der Pydev Erweiterung. Das funktioniert ganz gut.
Ich mag diese Benutzeroberflächen basierten Debugger mehr als einfach eine print-Anweisung zu schreiben. Bin ich halt von Matlab gewohnt und wer mag schon Veränderungen ;)
Antworten