dynamic import with heritage

marco manatlan at online.fr
Fri Jun 11 17:36:27 CEST 2004


Grégoire Dooms a écrit :
> marco wrote:
> 
>> 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)
>>
> 
> I wrote
> from __main__ import bidon
> Not
> from main import bidon

if i wrote :
"from __main__ import bidon"

i've go an "ImportError: Cannot re-init internal module __main__"
?!?

> __main__ is the namespace of the script you run.
> It is always already loaded so you don't need any modification to sys.path.

yes, i understand  ... but it seems it doesn't work well

> I would define bidon in base_classes.py, have the script import that 
> module and have the plugin import __main__ and refer to the bidon it via 
> from __main__.base_classes import bidon
> 
yes, it's better
but i'd like to do it like up

> Otherwise have the script add the directory of base_classes.py to 
> sys.path and the plugin just
> from base_classes import bidon
> 
> -- 
> Grégoire Dooms



More information about the Python-list mailing list