dynamic import with heritage
Peter Abel
PeterAbel at gmx.net
Fri Jun 11 16:49:36 EDT 2004
marco <manatlan at online.fr> wrote in message news:<40c9c54e$0$26793$626a14ce at news.free.fr>...
> Grégoire Dooms a écrit :
> > In your dhuile package, you need bidon in your namespace.
> > This can be done by importing the module containing bidon's definition.
> > According to what you say ("here my main"), this module is __main__ .
> >
> > So a simple
> > from __main__ import bidon
> > class vidange(bidon):
> > pass
> > should do the job.
> >
>
> your statement doesn't work
> but it works, if i do :
> -------------------------
> import sys
> sys.path.append("../..")
> from main import bidon
> -------------------------
>
> does it exists a way to do it easier ? (i don't like this technick to
> append a path to sys.path)
>
> > If you want your dhuile package to be more portable, it would be better
> > to define bidon in a separate module (e.g. a "contenants.py" module )
> > and get both your main and dhuile import it.
> >
> > Hope it helps.
> > --
> > Grégoire Dooms
> >
> > marco wrote:
> >
> >> i try to make a dynamic import of a plugin which herits from another
> >> class
> >>
> >> here my main:
> >> -------------------------------------------------------------------
> >> class bidon:
> >> pass
> >>
> >> plugin = __import__( "plugins.dhuile" , globals(), locals())
> >> -------------------------------------------------------------------
> >>
> >> And in the file /plugins/dhuile/__init__.py, i've got :
> >> -------------------------------------------------------------------
> >> class vidange(bidon):
> >> def test():
> >> return "ok"
> >> -------------------------------------------------------------------
> >>
> >> python2.3 gives me :
> >> "__init__.py : NameError: name 'bidon' is not defined"
> >>
> >> i don't understand where is the mistake ?!
> >> (class "bidon" is in passed by the globals() ... but it seems
> >> __init__.py doesn't understand)
> >>
> >> anybody have got an idea ?
> >> thanx
Try:
import plugins.dhuile as plugin
class vidange(plugin.bidon):
def test(self):
...
...
Should work
Bonne chance.
Regards
Peter
More information about the Python-list
mailing list