En Sat, 19 Sep 2009 17:06:11 -0300, Gabriel Rossetti
<gabriel.rosse...@arimaz.com> escribió:
Hello everyone,
I'd like to ba able to import a package and have it's __init__
conditionally import a subpackage. Suppose that you have this structure :
mybase/
mybase/__init__.py
mybase/mypkg
mybase/mypkg/__init__.py
mybase/mypkg/module0.py
mybase/mypkg/type1
mybase/mypkg/type1/__init__.py
mybase/mypkg/type1/module1.py
mybase/mypkg/type1/module2.py
mybase/mypkg/type2
mybase/ mypkg/type2/__init__.py
mybase/ mypkg/type2/module1.py
mybase/ mypkg/type2/module2.py
I'd like to do something like th following in my code
>>> import mybase
>>> mybase.setType("type1")
>>> from mybase.mypkg import module0, module1, module2
>>> module0.__file__
'mybase/mypkg/module0.pyc'
>>> module1.__file__
'mybase/mypkg/type1/module1.pyc'
>>> module2.__file__
'mybase/mypkg/type1/module2.pyc'
but I can't figure out how to do this.
That depends on how dynamic you want/have to be.
(inside mybase/mypkg.__init__py):
def setType(type_):
global module1, module2
if type_ == 'type1':
from .type1 import module1, module2
elif type_ == 'type2':
from .type2 import module1, module2
else:
raise ValueError, 'unknown type: %s' % type_
A more generic version:
def setType(type_):
global module1, module2
t = __import__(type_, globals(), locals(), ['module1','module2'], 1)
module1 = t.module1
module2 = t.module2
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list