Module mit unbekannten Namen laden

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
julianibus
User
Beiträge: 16
Registriert: Montag 21. Juni 2010, 13:04
Wohnort: Aschaffenburg
Kontaktdaten:

Hallo,
ich bin wieder mal (nicht nur in python) auf folgendes Problem gestoßen: Ich muss in einem Spiel Module nachladen, deren Namen von den übergebenen Parametern abhängig sind.
Geht das in Python? Und wenn ja, wie?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Es gibt dass imp-Modul http://docs.python.org/library/imp.html und __import__
the more they change the more they stay the same
lunar

Du kannst "import_string()" aus dem Werkzeug-Quelltext klauen.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Auch wenn der Aufschrei sicher groß sein wird:

Code: Alles auswählen

exec "import %s" % "modulname"
lunar

AUFSCHREI!!!!!
Wenn, dann richtig!

Schade, dass der Aufschrei nicht größer als 200 geht ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

AUFSCHREI!

Weil ASCII keine Farben kennt und ich oldskool-formatiere ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Auch Oldschool geht das grösser:

Code: Alles auswählen

         _    _ ______ _____  _____ _    _ _____  ______ _____
    /\  | |  | |  ____/ ____|/ ____| |  | |  __ \|  ____|_   _|
   /  \ | |  | | |__ | (___ | |    | |__| | |__) | |__    | |
  / /\ \| |  | |  __| \___ \| |    |  __  |  _  /|  __|   | |
 / ____ \ |__| | |    ____) | |____| |  | | | \ \| |____ _| |_
/_/    \_\____/|_|   |_____/ \_____|_|  |_|_|  \_\______|_____|
Oder mit den Grafikzeichen mit denen auf dem C64 gerne Inhaltsverzeichnisse von Disketten gestaltet wurden:

Code: Alles auswählen

    ╭─╮   ┌┐    ╭╮
╭─┬┬┤├┼─┬─┤└┬─┬─┼┤
├┘│││└┤└┤├┤││├┤│││
│││││┌┼┐│├┤││││┌┤│
╰─┴─┤│╰─┴─┴┴┴┘╰─┴┘
────└╯────────────
("best viewed" mit einer Schriftart, die auch alle diese Unicode-Zeichen enthält.)
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich kann diesem Aufschrei nur beipflichten, denn zumindest in Python 3.x kann man erst nach den nötigen Modifizierungen

Code: Alles auswählen

>>> def my_import(modname):
...     exec('import {module}'.format(module=modname))
... 
...seine Imports wie gewünscht ausführen:

Code: Alles auswählen

>>> my_import('sys; sys.exit()')
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@BlackJack: Warum hat dein figlet ueberlebt?! Bei mir wollte sich das Forum an nem Strich vergreifen :(
(Natuerlich in einem code Block)
BlackJack

@cofi: Ich hatte auch erst Probleme mit einer Zeile bis ich den Code-Typ explizit auf "text" gesetzt habe, also [ code=text] statt einfach nur [ code].
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Feinste Software! :roll:
Antworten