Communicate errors when Loading the Enmap Algorithm Provider

Issue #42 resolved
Andreas Janz created an issue

Wenn beim Laden des Algo-Providers (enmapboxplugin.py) ein Fehler auftritt, ist dieser nicht in der QGIS Umgebung sichtbar und kann nicht gut debugged werden. Ich habe das try-except aktuell aufkommentiert, damit ich weiterarbeiten kann.

Benjamin, bitte versuche dafür eine bessere Lösung zu finden. Es sieht so aus, als ob du bereits etwas versucht hast, aber ich sehe keine Print-Messages in meinem QGIS. Hier meine Code-Änderung

        # init processing provider
        dprint('INIT ENMAPBOX PROCESSING PROVIDER(S)')
        if self.has_processing_framework():
            # add example app
            #try:
            from processing.core.Processing import Processing
            from enmapbox.apps.core import EnMAPBoxProvider
            self.processingProviders.append(EnMAPBoxProvider())
            #add providers to processing framework

            for provider in self.processingProviders:
                Processing.addProvider(provider)

            #except Exception, e:
            #    tb = traceback.format_exc()
            #    six.print_('ERROR occurred while loading EnMAPBoxProvider for processing frame work:', file=sys.stderr)
            #    six.print_(str(e))
            #    six.print_(tb)
            dprint('Processing framework initialization done')
        else:
            dprint('Unable to fine processing framework')
        dprint('EnMAP-Box initialization done')

Comments (8)

  1. Benjamin Jakimow

    Siehst du gar keine printouts, d.h. nicht mal das dprint('INIT ENMAPBOX PROCESSING PROVIDER(S)'), oder nur die von six.print_ nicht?

  2. Andreas Janz reporter

    Ah ok, also wenn ich QGIS starte, dann ist nichts zu sehen. Das ist nicht so schön. Wenn ich nun die Python Console einschalte und die EnMAP-Box deaktiviere und dann wieder aktiviere, bekomme ich eine aussagekräftige Meldung! Damit kann ich erstmal gut weiterarbeiten.

    Ist es möglich, dass du im Falle eines Fehlers die QGIS Konsole einschaltest und den Traceback dann printest?

  3. Benjamin Jakimow

    Es macht jetzt nicht viel Sinn diese Stelle immer hin und her auszukommentieren.

    Ich finde es sinnvoll wenn der EnMAPBoxProvider() geladen werden kann ohne das jedes Package, was vielleicht gar nicht benötigt wird, vorhanden sein muss.

    Du kannst das ja selbst mit eigenen std.err Meldung berichten, die beim laden des EnMAPBoxProviders prüfen was fehlt. Dann laufen aber immer noch die Kompenten die z.B. ohne astrolib auskommen.

  4. Andreas Janz reporter

    Verstehe deinen letzten Kommentar nicht?! Ich habe doch in meinem letzten Kommentar gesagt, dass ich mit der aktuellen Variante arbeiten kann. Der try-except Block ist gut wie er ist! Ich habe lediglich angeregt, dass du programmatisch bevor du den Traceback printest die Konsole in QGIS einschaltest. Wenn die nicht aktiv ist, dann sind deine Prints nicht sichtbar :-)

  5. Benjamin Jakimow

    Ich hatte das mal so, dass mit jedem Start der Box auch die QGIS Python Console aufklappte, denn dort werden alle printouts hindirected (welch ein schönes Wort...).

    Das habe ich dann aber wieder verworfen. In einem späteren Stadium möchte ich sowas nämlich über eine QgsMessageBar oder ein extra Widgets printen.

    Wenn Du QGIS mal mit geöffneter Python Console schließt ist sie nach dem Neustart glaube ich auch wieder geöffnet und du siehst alles vom Start an.

    Es gibt auch ein Plugin welches die Console durch eine mit traceback ersetzt

  6. Benjamin Jakimow

    Den schrieb ich noch vor dem "Ah ok, also wenn ich QGIS starte" Kommentar. Zudem ist der try except block im obigen Beispiel immer noch auskommentiert. Du kannst die diesem Missverständis geschuldeten Kommentare (einschließlich diesem) gern löschen.

  7. Andreas Janz reporter

    Ach lass stehen, was für Menschen gilt, gilt auch für Kommentare: die Toten mahnen die Lebenden ;-)

  8. Log in to comment