Struggling to append a relative path to my sys.path
Question: So there are a lot of pretty similar questions but none of the answers seems
to satisfy what I'm looking for.

Essentially I am running a python script using an absolute directory in the
command line.  
Within this file itself, I want to import a module/file,I currently use an
absolute path to do this (`sys.path.append(/....)`.  
But I would like to use a relative path, relative to the script itself.  
All I seem to be able to do is append a path relative to my present working
directory.

How do I do this?


Answer: **Example 1**

    
    
    main script:      /some/path/foo/foo.py
    module to import: /some/path/foo/bar/sub/dir/mymodule.py
    

Add in `foo.py`

    
    
    import sys, os
    sys.path.append(os.path.join(sys.path[0],'bar','sub','dir'))
    from mymodule import MyModule
    

* * *

**Example 2**

    
    
    main script:      /some/path/work/foo/foo.py
    module to import: /some/path/work/bar/mymodule.py
    

Add in `foo.py`

    
    
    import sys, os
    sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'bar'))
    from mymodule import MyModule
    

* * *

**These two above examples should cover all use cases**

  * These two above examples apply to both Python versions 2 and 3
  * `sys.path[0]` is `/some/path/foo` in the two examples
  * `os.path.join('a','b','c')` is more portable than `'a/b/c'`
  * `os.path.dirname(mydir)` is more portable than `os.path.join(mydir,'..')`

See also documentation about importing modules:

  * in [Python 2](https://docs.python.org/2/tutorial/modules.html)
  * in [Python 3](https://docs.python.org/3/tutorial/modules.html)

