How to shortcut a package path?

Graham Fawcett fawcett at
Sun Aug 17 07:22:34 CEST 2003

sdhyok wrote:

>Is there any way to create a shortcut for a package path?
>For instance, if I have the following path structure,
>what should I do if I want to import program with
>from dir1 import program
>, not with
>from dir1.dir2 import program

If it were me, I would lay it out as such:


    from dir1 import program

    # dir1/

    from dir1.dir2 import program  

    # or, from dir2 import program, see note below.

    # dir1/dir2/

    """Required, of course"""

    # dir1/dir2/

    """Your code"""

Side note: In dir1/, I used "from dir1.dir2 import program" 
instead of "from dir2 import program". Either one would work, but 
sometimes you have to be careful not to mix the two (the absolute and 
the relative) approaches. Mixing them can lead to the a module being 
initialized twice, which can sometimes lead to some strange and 
hard-to-debug behaviour. Given the Python zen-ism of "explicit is better 
than implicit", my vote is for the side-effect-free, "full path" approach.

Here's one of many threads that refers to this 
double-initialization behaviour (maybe not the best, but the first I found):

Pedro asked why you want to do this... Personally, I might use this 
technique would be if I wanted "dir1" to act as a Facade, or API, to a 
set of subpackages. Import all of the "public" classes and functions 
into the dir1.__init__ module, and then your users are less inclined to 
access your "private" subpackages. This isn't a security technique, of 
course, it's just clean API design.

-- Graham

More information about the Python-list mailing list