import module from package - confusing syntax
David MacQuigg
dmq at gain.com
Sat Jul 3 09:21:05 EDT 2004
I'm setting up a large hierarchy of module packages and using a
variable to select which of many alternative packages to import. For
example, the variable 'config.modsel' points to a particular "model
selector" package. 'config' is a module containing many such
variables.
My first attempt resulted in a confusing error message:
>>> from config.modsel.modelselector import ModelSelector
Traceback (most recent call last):
File "<pyshell#25>", line 1, in -toplevel-
from config.modsel.modelselector import ModelSelector
ImportError: No module named modsel.modelselector
It works if I enter the literal path rather than a variable:
>>> config.modsel
<module 'libs.modsel01' ... >
>>> from libs.modsel01.modelselector import ModelSelector
>>> ModelSelector
<class libs.modsel01.modelselector.ModelSelector at 0x009F68D0>
I need to use a variable, however. The best I can come up with is:
>>> exec('from '+ config.modsel.__name__ +'.modelselector import ModelSelector')
>>>
Is this the best we can do with current Python syntax?
Should we think about suggesting a better syntax? I think the
fundamental problem is the confusion that arises from using '.' as
both a path separator and an attribute qualifier.
-- Dave
More information about the Python-list
mailing list