Seite 1 von 1

Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 13:16
von julianibus
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?

Re: Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 13:21
von Dav1d
Es gibt dass imp-Modul http://docs.python.org/library/imp.html und __import__

Re: Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 15:06
von lunar
Du kannst "import_string()" aus dem Werkzeug-Quelltext klauen.

Re: Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 20:37
von HerrHagen
Auch wenn der Aufschrei sicher groß sein wird:

Code: Alles auswählen

exec "import %s" % "modulname"

Re: Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 21:06
von BlackJack
*Aufschrei*

Re: Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 21:19
von lunar
AUFSCHREI!!!!!
Wenn, dann richtig!

Schade, dass der Aufschrei nicht größer als 200 geht ;)

Re: Module mit unbekannten Namen laden

Verfasst: Montag 26. Juli 2010, 23:18
von Leonidas
AUFSCHREI!

Weil ASCII keine Farben kennt und ich oldskool-formatiere ;)

Re: Module mit unbekannten Namen laden

Verfasst: Dienstag 27. Juli 2010, 08:53
von 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.)

Re: Module mit unbekannten Namen laden

Verfasst: Dienstag 27. Juli 2010, 09:56
von snafu
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()')

Re: Module mit unbekannten Namen laden

Verfasst: Dienstag 27. Juli 2010, 10:03
von cofi
@BlackJack: Warum hat dein figlet ueberlebt?! Bei mir wollte sich das Forum an nem Strich vergreifen :(
(Natuerlich in einem code Block)

Re: Module mit unbekannten Namen laden

Verfasst: Dienstag 27. Juli 2010, 10:26
von 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].

Re: Module mit unbekannten Namen laden

Verfasst: Dienstag 27. Juli 2010, 10:52
von cofi
Feinste Software! :roll: