Re: access to submodules
okay, thanks everyone. this is much clearer now. -- http://mail.python.org/mailman/listinfo/python-list
access to submodules
hi. This is my first try on modules. I've got : tom/ __init__.py core.py ui.py data.py then, when I'm in my ipython shell : ? from tom import * this works, it loads core, ui and data but when I do this : ? import tom ? tom.core AttributeError: 'module' object has no attribute 'core' Well, i guess I missed something, but I don't see what ... -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
I've just found this : If I add : import core, data, ui inside my tom/__init__.py file, it will work. But this line does not seems to exist in other files (after having a look at several files inside /usr/lib/python2.4). -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
from tom import * You CAN do this, but it's a bad habit. Try: import tom Then call by tom.function() rd -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
I know this is a bad habit ... I was just doing it to show what is disturbing me. Obviously the star syntax finds the submodules because they are loaded, but when I properly load the module alone with import tom, the dot syntax does not find tom.core. BartlebyScrivener wrote: from tom import * You CAN do this, but it's a bad habit. Try: import tom Then call by tom.function() rd -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
http://tinyurl.com/6yz2g If you do from tom import * then you no longer need tom, you imported all of his FUNCTIONS (never heard of submodule). rd -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
BartlebyScrivener wrote: then you no longer need tom, you imported all of his FUNCTIONS (never heard of submodule). my mistake, I was using the wrong name tom/ -- package __init__.py core.py data.py these are modules contained in tom/ ui.py if I import tom, it is supposed to load functions defined in tom/__init__.py and make all the modules inside accessible through the dot syntax. Therefore, this is supposed to work : ? import tom ? help(tom.core) AttributeError: 'module' object has no attribute 'core' But if I use the bad star syntax ? from tom import * ? help(core) this will work. So that means star loaded functions of __init__.py AND modules contained, whereas dot syntax does not give me access to modules inside. The issue is not about using or not using the import * ... -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
TG wrote: if I import tom, it is supposed to load functions defined in tom/__init__.py and make all the modules inside accessible through the dot syntax. Therefore, this is supposed to work : ? import tom ? help(tom.core) AttributeError: 'module' object has no attribute 'core' But if I use the bad star syntax ? from tom import * ? help(core) this will work. No, it won't. Try again with a fresh interpreter (no prior imports) from tom import * core Traceback (most recent call last): File stdin, line 1, in ? NameError: name 'core' is not defined import tom tom.core Traceback (most recent call last): File stdin, line 1, in ? AttributeError: 'module' object has no attribute 'core' Only after an explicit import of tom.core... from tom import core del core from tom import * core module 'tom.core' from 'tom/core.py' is core added as an attribute to tom and will therefore be copied into the namespace of a module doing a star-import. Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
okay, so only when I have inside __init__.py __all__ = [core] this works ? from tom import * ? help(core) but (in a brand new interpretor) ? import tom ? help(tom.core) AttributeError: 'module' object has no attribute 'core' got it. But ... ? import numpy ? help(numpy.core) this will work, even if core is a subpackage of numpy. and i don't have to explicitly import numpy.core. I must be missing something ... :-/ -- http://mail.python.org/mailman/listinfo/python-list
Re: access to submodules
TG wrote: okay, so only when I have inside __init__.py __all__ = [core] this works ? from tom import * ? help(core) but (in a brand new interpretor) ? import tom ? help(tom.core) AttributeError: 'module' object has no attribute 'core' got it. But ... ? import numpy ? help(numpy.core) this will work, even if core is a subpackage of numpy. and i don't have to explicitly import numpy.core. I must be missing something ... :-/ numpy does the equivalent of import core in its __init__.py Help on method __call__ in module numpy._import_tools: __call__(self, *packages, **options) unbound numpy._import_tools.PackageLoader method Load one or more packages into parent package top-level namespace. Usage: This function is intended to shorten the need to import many of subpackages, say of scipy, constantly with statements such as import scipy.linalg, scipy.fftpack, scipy.etc... Instead, you can say: import scipy scipy.pkgload('linalg','fftpack',...) Peter -- http://mail.python.org/mailman/listinfo/python-list