Two import questions in Python 3.0

Scott David Daniels Scott.Daniels at Acm.Org
Sat Jan 24 18:51:53 CET 2009


Kay Schluehr wrote:
> On 24 Jan., 09:21, "Gabriel Genellina" <gagsl-... at yahoo.com.ar> wrote:
>> If you run A.py as a script, it does not "know" it lives inside a package.
>> You must *import* A for it to become aware of the package.
>> Also, the directory containing the script comes earlier than PYTHONPATH
>> entries in sys.path -- so watch for that case too.
> Thanks, yes. I always make the same error thinking that a directory
> with the ritual __init__ file is actually a package ( as some kind of
> platonic entity ), something that is more obvious to me than it is to
> the runtime. The relative import semantics introduced with Python 2.5
> has made the error just visible that was hidden to me for about a
> decade. Shit.
Temper the language a bit.  You lose your effectiveness by some people
reading the color of your words, rather than their meaning in code.

By the way, if you run the script as:

     $ python -m package.A

You may get what you want

demo (language fixed up a bit, moe info printed):

in .../lib/site-packages:
     possible.py
     -------------
     print('import from top possible: %s' % __file__)

in .../lib/site-packages/package:
     possible.py
     -------------
     print('import from package.possible: %s' % __file__)

     __init__.py
     -------------
     print('package initialized: %s' % __file__)


     A.py
     ------
     print('A started: %s' % __file__)
     import possible
     print('A running: %s' % __file__)

--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-list mailing list