define module in non-standard location?

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sun Oct 16 23:55:29 EDT 2011


On Sun, 16 Oct 2011 19:43:20 -0700, Shane wrote:

> Normally if one has a code set under a directory "top_level" like this:
> 
> top_level:
>    __main__.py
>    a
>       __init__.py
>       b
>          __init__.py
> 
> then this directory structure is naturally satisfies this line in
> __main__.py:
> 
>>import a.b
> 
> But support, for some stupid reason --- say a.b is user defined code ---
> that I want
> to locate modules a and a.b somewhere else under another directory
> "other_top_level".

You mean like this?

top_level/
    __main__.py
other_top_level/
    a/
        __init__.py
        b/
            __init__.py




> What would the line "import a.b" in __main__,py be replaced by?


Make sure other_top_level is in your PYTHONPATH, and then just use 
"import a.b" as before.


Either use your shell to do something like this:

export PYTHONPATH=other_top_level:$PYTHONPATH

(that's using bash syntax, other shells may need something different), or 
in __main__.py do this:

import sys
sys.path.append(other_top_level)



-- 
Steven



More information about the Python-list mailing list