[Tutor] Still Trying to Understand GAE

admin at gg-lab.net admin at gg-lab.net
Thu Sep 17 14:38:38 CEST 2009


Thankyou all, you're very precious for me.

yeah it seems the development webserver (and the production one) are
importing modules in a non-standard way.

I absolutely don't understand this choice. Why import everything
everytime? Don't you think it makes scripts much more slow?

Giorgio

2009/9/16 Kent Johnson <kent37 at tds.net>:
> On Sun, Sep 13, 2009 at 9:59 AM, admin at gg-lab.net <admin at 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
>


More information about the Tutor mailing list