On Sun, Sep 13, 2009 at 9:59 AM, ad...@gg-lab.net <ad...@gg-lab.net> wrote: > Hi All, > > i've started earning python sone months ago (on Google App Engine > unfortunately). > > I have some doubts reagrding "import", and have asked a similar > question here months ago, but without finding a solution. > > So: > > with import i can import modules or single functions. And this is ok. > Then: as i have understood from all the books i readm in each package > directory i have the __init__.py file that decides what import with > it. In other words if my package skel is like: > > /gg/ > /gg/sub1/ > /gg/sub1/file.py > /gg/sub2/ > /gg/sub2/file.py > > and i use "import gg", nothing is imported. To import sub1 and sub2, i can: > > - Put in /gg/ a __init__.py file that tells to import them > - Use "from gg import sub1" > > Ok now the $1 Billion question: google app engine has the same schema > than my "gg" package, an empty __init__.py file, but if i use "import > google" it also imports all subdirectories. And i can't understand > wiƬhy it does so.
In general, import foo does not import subpackages of foo unless they are specifically imported in foo/__init__.py, so dir(foo) will not show the subpackages. However if you import foo import foo.bar then dir(foo) will include 'bar'. Here is an example from the std lib: In [1]: import distutils In [2]: dir(distutils) Out[2]: ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__revision__', '__version__'] In [3]: import distutils.cmd In [4]: dir(distutils) Out[4]: ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__revision__', '__version__', 'archive_util', 'cmd', 'dep_util', 'dir_util', 'errors', 'file_util', 'log', 'spawn', 'util'] My guess is that the startup for GAE is importing the subpackages so they then appear as imported modules. To access your sub-package, just import it normally. Kent _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor