It all depends on which script you run. That script’s path will be added to python’s search path automatically.
Make it the following structure:
TestApp/
├─ testapp/
│ ├─ __init__.py
│ ├─ testmsg.py
│ ├─ sub/
│ │ ├─ __init__.py
│ │ ├─ testprinter.py
├─ README
├─ LICENSE
├─ setup.py
├─ run_test.py
Then run TestApp/run_test.py first:
from testapp.sub.testprinter import functest ; functest()
Then TestApp/testapp/sub/testprinter.py could do:
from testapp.testmsg import MSG
print("The message is: {0}".format(testmsg.MSG))
More good hints here;