Seite 1 von 1

Abfrage zur Laufzeit ob Modul vorhanden ...

Verfasst: Mittwoch 12. Januar 2011, 09:23
von ts7343
Hallo,

mich wuerde interessieren, wie ihr es aufsetzen wuerdet, wenn man zur Laufzeit eines Programmes
das Vorhandensein eines Modules abfragt.

Folgendes Beispiel:
Man weiss nicht, ob das tkinter Modul auf dem Rechner installiert ist und moechte zur Not
dann auf Batchebene weitermachen wenn das Programm gestartet wurde.

Bis jetzt wuerde ich es notfalls irgendwie auf Shell Ebene abfragen bevor ich dann Python starte,
aber das ist maechtig krampfig irgendwie.

Ideen fuer mich?

Thanks

Re: Abfrage zur Laufzeit ob Modul vorhanden ...

Verfasst: Mittwoch 12. Januar 2011, 09:32
von .robert

Code: Alles auswählen

try:
    from <bla> import <blub>
except ImportError:
    <dumdidum>

Re: Abfrage zur Laufzeit ob Modul vorhanden ...

Verfasst: Mittwoch 12. Januar 2011, 09:33
von BlackJack
@ts7343: Einfach importieren und den `ImportError` entsprechend behandeln wenn das Modul nicht importiert werden kann.

Re: Abfrage zur Laufzeit ob Modul vorhanden ...

Verfasst: Mittwoch 12. Januar 2011, 11:18
von ts7343
ImportError ist das magische Wort, genial!

Vielen Dank fuer Eure Hilfe, das funktioniert!

Re: Abfrage zur Laufzeit ob Modul vorhanden ...

Verfasst: Mittwoch 12. Januar 2011, 11:27
von /me
ts7343 hat geschrieben:ImportError ist das magische Wort, genial!
Prinzipiell kann man bei jedem Fehler schauen, welcher Fehler erzeugt wurde und dann bei Bedarf durch eine entsprechende Fehlerbehandlung entsprechend darauf reagieren.

Man sollte dabei immer den konkreten erwarteten Fehler abfangen. Der folgende Code ist böse:

Code: Alles auswählen

x = 1
try:
    x ← 2 / x
except:
    print "Unbekannter Fehler"
print x
Das Programm wird beim Ausführen "Unbekannter Fehler" ausgeben, dabei ist der Fehler gar nicht unbekannt. Das ist ein ganz einfacher "Syntax Error". Sinnvoll wäre hier folgendes:

Code: Alles auswählen

x = 1
try:
    x ← 2 / x
except ZeroDivisionError:
    print "Es wurde versucht x durch Null zu dividieren"
print x
Mit diesem Code fängt man nur den Fehler ab, den man eigentlich abfangen wollte.