Python importing a module from a parallel directory

import, module, parent, python, relative-import

Solution

Python adds the folder containing the script you launch to the PYTHONPATH, so if you run

python test/tests.py

Only the folder `test` is added to the path (not the base dir that you're executing the command in).

Instead run your tests like so:

python -m test.tests

This will add the base dir to the python path, and then classes will be accessible via a non-relative import:

from src.classes import etc

If you really want to use the relative import style, then your 3 dirs need to be added to a package directory

package
* __init__.py
* project
* src
* test

And you execute it from above the package dir with

python -m package.test.tests

See also:

- https://docs.python.org/2/using/cmdline.html

- http://www.stereoplex.com/blog/understanding-imports-and-pythonpath

Problem

How would I organize my python imports so that I can have a directory like this. ``` project | \ | __init__.py | src | \ | __init__.py | classes.py | test \ __init__.py tests.py ``` And then inside /project/test/tests.py be able to import classes.py I've got code looking like this in tests.py ``` from .. src.classes import( scheduler db ) ``` And am getting errors of ``` SystemError: Parent module '' not loaded, cannot perform relative import ``` Anyone know what to do?

Original source