[Python-de] __import__ mit packages

Georg Mischler schorsch at schorsch.com
Thu Aug 30 14:28:14 EDT 2001


Christoph Herzog wrote:

> Hallo Alle,
> ich versuche mit __import__ Module zur Laufzeit dynamisch zu
> laden. Ich kriege das aber nicht hin, wenn ich es mit Modulen in
> Packages versuche
> Also folgendes geht:
>
> x = "PluginA"
> myplugin = __import__(x)
>
>
> Aber mit folgender Verzeichnisstruktur:
>
> <directory des aktuellen python-programms>
> 	/plugins
> 	/plugins/__init__.py
> 	/plugins/PluginA.py
>
> und dem Code:
>
> x = "plugins.PluginA"
> myplugin = __import__(x)
>
> funktioniert es nicht. Ich habe zwar dann im Namensraum
> dir(myplugin) auch PluginA stehen, aber nicht dessen Methoden
> etc. Was mache ich da falsch? Vielen Dank für Tips
> Christoph


Hast du schon versucht, die Dokumentation zu konsultieren?

>>> print __import__.__doc__
__import__(name, globals, locals, fromlist) -> module

 Import a module.  The globals are only used to determine the context;
 they are not modified.  The locals are currently unused.  The fromlist
 should be a list of names to emulate ``from name import ...'', or an
 empty list to emulate ``import name''.
 When importing a module from a package, note that __import__('A.B', ...)
 returns package A when fromlist is empty, but its submodule B when
 fromlist is not empty.


Beachte insbesondere den zweiten Abschnitt!
In der Praxis folgt daraus:

myplugin = __import__('PluginA', globals(), locals(), ['plugins'])


Viel Spass!

-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch.com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/




More information about the Python-de mailing list