In my experience it is easiest if your project root is not a package, like so:
project/
test.py
run.py
package/
__init__.py
main_program.py
lib/
__init__.py
lib_a
lib_b
tests/
__init__.py
test_a
test_b
However, as of python 3.2 , the unittest module provides the -t option, which lets you set the top level directory, so you could do (from package/):
python -m unittest discover -t ..
More details at the unittest docs.