Abfrage zur Laufzeit ob Modul vorhanden ...

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
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

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
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Code: Alles auswählen

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

@ts7343: Einfach importieren und den `ImportError` entsprechend behandeln wenn das Modul nicht importiert werden kann.
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

ImportError ist das magische Wort, genial!

Vielen Dank fuer Eure Hilfe, das funktioniert!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Antworten