print in script

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
drnicolas
User
Beiträge: 85
Registriert: Sonntag 24. Juli 2016, 10:32

Ich rufe mit subprocess.Popen(..., shell=True) ein anderes Skript auf.
Dort will ich mit print() debug-Informationen ausgeben lassen, da meine IDE nicht einfach zum Debuggen in das nächste Skript springt

Leider kommt mit print() nichts - wieso?
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Tut mir leid, meine Glaskugel ist gerade in Reparatur.
Statt von einem Python Script ein anderes aufzurufen, benutze einfach Funktionen. Dann klappt das auch mit dem Debugger.
Benutzeravatar
__blackjack__
User
Beiträge: 13109
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@drnicolas: ”Einfach” in das nächste Skript springen geht ja auch gar nicht. Das wird noch mal unmöglicher wenn man da noch eine Shell dazwischen schaltet, denn *den* Code müsste der Debugger dann ja auch verstehen können, und da ist ja nicht einmal klar *welche* Shell das ist.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
grubenfox
User
Beiträge: 430
Registriert: Freitag 2. Dezember 2022, 15:49

drnicolas hat geschrieben: Sonntag 29. Januar 2023, 11:31 Ich rufe mit subprocess.Popen(..., shell=True) ein anderes Skript auf.
mit dem "shell=True" wird meiner Meinung nach irgendwo im Hintergrund eine neue Shell gestartet und dort läuft dann das zweite Skript... und in dieser Hintergrund-Shell landen dann auch die print-Ausgaben.
(wenn das zweite Skritp durchgelaufen ist wird auch gleich die Hintergrund-Shell beendet und beerdigt. )
Benutzeravatar
__blackjack__
User
Beiträge: 13109
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@grubenfox: Aber normalerweise gibt die Shell die Ausgaben ihrerseits ja auch einfach nur über das geerbte echte `stdout` des Elternprozesses aus. Würde also die Vermutung nahelegen, dass die IDE die Ausgaben nicht dort abgreift, sondern das erste Programm irgendwie in der eigenen Umgebung ausführt und entweder `sys.stdout` abgreift oder gar `print()` durch etwas eigenes ersetzt. Da würde ich dann die IDE als ein bisschen problematisch ansehen. Ich starte Konsolenprogramme ja sowieso immer in der Konsole, damit ich weiss wie die sich *dort* verhalten wo sie im Endeffekt auch laufen sollen, und ausschliessen zu können, dass IDE oder Editor sich da irgendwie subtil (oder eben auch deutlich) anders verhalten.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
grubenfox
User
Beiträge: 430
Registriert: Freitag 2. Dezember 2022, 15:49

@__blackjack__: Ja... Zustimmung meinerseits....
Wenn ich auch gerne die entstehenden Programme während der Entwicklung direkt aus dem Editor starte (einfach [STRG]+[ B ] ist beim tippen ja schnell gedrückt), kommt irgendwann der Moment ab dem ich dann in ein extra Konsolenfenster wechsel und das Ding dann dort starte. Ich glaube bei mir waren es meistens Zeichensatz-Problematiken bei denen ich dann Unterschiede zwischen der Ausgabe im Editor und der Ausgabe in der Konsole hatte. Und auch beim hantieren mit relativen Dateipfaden.
Antworten