Re: access to submodules

2006-07-20 Thread TG
okay, thanks everyone. this is much clearer now.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: access to submodules

2006-07-19 Thread TG
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

2006-07-19 Thread BartlebyScrivener
  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

2006-07-19 Thread TG
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

2006-07-19 Thread BartlebyScrivener
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

2006-07-19 Thread TG
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

2006-07-19 Thread Peter Otten
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

2006-07-19 Thread TG
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

2006-07-19 Thread Peter Otten
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