Kein Output

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
Fisch3r
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2016, 07:34

Hallo,

ich bekomme seit kurzem keinen Output mehr wenn ich mit F5 den Code durchlaufen lasse. Entweder bekomme ich ein Error wenn etwas falsch ist, oder einfach die Standartzeile mit dem Ordnerpfad, falls alles richtig ist.

Es kann sein das ich keinen Output mehr bekomme, seitdem ich einmal:
import sys
reload(sys)
sys.setdefaultencoding('Cp1252')
benutzt habe (um ein Problem zu lösen), aber jetzt brauche ich diese Zeilen auch nicht mehr.

Ich hoffe einer von euch kann mir weiterhelfen. Bin noch relativ neu in Python.

Gruß
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Kann es sein, dass du IDLE benutzt? Falls ja, dann solltest du ein `reload()` auf dem `sys`-Modul vermeiden. Grund: IDLE nimmt spezifische Änderungen an diesem Modul vor, was das Umleiten von Ein- und Ausgaben betrifft. Nach dem Reload des Moduls gehen diese Änderungen aber verloren und IDLE funktioniert dann nicht mehr korrekt.

EDIT:
Ohnehin sollte ein Reload nur dann getätigt werden, wenn man sehr gute Gründe dafür hat, da dies – wie man hier sieht – eine potenzielle Fehlerquelle darstellt.
BlackJack

@Fisch3r: Zusatz zu snafus EDIT: Die `setdefaultencoding()`-Funktion wird beim Start von Python absichtlich aus dem `sys`-Modul entfernt damit die nicht verwendet werden kann. Du machst da also etwas von dem die Entwickler ganz stark wollen das Du das *nicht* machst. Das hat Gründe wie Du siehst.
Fisch3r
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2016, 07:34

Hallo,

ich benutze Spyder.
Hast du vielleicht eine Idee wie ich das wieder rückgängig machen kann?
BlackJack

@Fisch3r: Wo hast Du das denn benutzt? Irgendwo in einem Startupskript welches immer wieder ausgeführt wird? Dann muss das da wieder raus.

Ansonsten kenne ich mich mit Spyder nicht wirklich aus, aber AFAIK ist das ja so ähnlich wie Jupyter Notebooks, also das Sachen die man ausführt auch auf die IDE Auswirkungen haben und es da wohl auch die Möglichkeit geben muss das System/Projekt in der Hinsicht irgendwie zu resetten.
Fisch3r
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2016, 07:34

Am Anfang meines Projektes wo ich auch die Module importiere.
Wenn ichs da raus mache und nochmal durchlaufen lasse, ändert sich aber nichts.

Es gibt ein "Reset Spyder settings"
Zur not das mal ausprobieren?
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Fisch3r hat geschrieben:ich benutze Spyder.
Läuft letztlich auf das selbe hinaus. Wenn du bei der Entwicklung getätigte Änderungen an deinem Modul interaktiv testen möchtest, dann solltest du dafür stets den Interpreter neustarten.

Im Übrigen kommen solche händischen Tests bei größeren Projekten normalerweise selten bis gar nicht vor. Denn dafür gibt es Testframeworks, mit denen du die Tests für neue Funktionalität einmalig definierst und dann automatisiert ablaufen lässt. Damit geht ein Testdurchlauf, sobald er einmal geschrieben ist, deutlich schneller vonstatten. Zudem vergisst man einzelne Tests nicht, was einem bei der manuellen Ausführung ab einer gewissen Codemenge schon fast zwingend passieren würde.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Fisch3r hat geschrieben:Es gibt ein "Reset Spyder settings"
Zur not das mal ausprobieren?
Falls es um Änderungen geht, die selbst nach einem Neustart der IDE noch Bestand haben, dann wäre das wohl die beste Lösung.
Fisch3r
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2016, 07:34

Ok..das ist mir jetzt schon ein bisschen peinlich :roll: der Neustart hat gereicht.
Auf die einfachsten Möglichkeiten kommt man halt manchmal nicht :D
Vielen Dank euch beiden!
BlackJack

@Fisch3r: Wie gesagt ist Spyder so ähnlich wie Jupyter Notebooks. Projekte werden dort wenn man sie laufen lässt nicht mit einem neu gestarteten Python-Interpreter ausgeführt, sondern da läuft einer im Hintergrund mit dem alle Läufe ausgeführt werden. Globale Änderungen haben also auf alle folgenden Läufe von Projekten, Scripten, oder auch Sachen die man in die Python-Konsole eintippt, Einfluss. Und umgekehrt.

Das ist nett wenn man interaktiv Daten untersuchen möchte, aber zur Programmentwicklung finde ich so ein Verhalten eher bedenklich, weil es schwieriger wird etwas zu entwickeln, bei dem man sicher ist, dass es auch wiederholbar läuft und nicht von irgendeinem globalen Effekt abhängig ist, der sich während der Entwicklung ergeben hat. Bei Jupyter Notebooks kann man das gesamte Notebook sehr einfach noch mal mit einem frischen System ausführen um zu testen ob dann auch noch alles so funktioniert wie vorgesehen. So eine Möglichkeit habe ich bei Spyder jetzt durch kurzes drüberschauen nicht gefunden. Aber wie gesagt, ich kenne mich mit dem Programm auch nicht wirklich aus. Vielleicht gibt es da ja auch so etwas.
Antworten