The two below alternate possibilities apply to both Python versions 2 and 3. Choose the way you prefer. All use cases are covered.
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
Explanations
sys.path[0]
is/some/path/foo
in both examplesos.path.join('a','b','c')
is more portable than'a/b/c'
os.path.dirname(mydir)
is more portable thanos.path.join(mydir,'..')
See also
Documentation about importing modules:
- in Python 2
- in Python 3