I’ve the following source code structure
testapp/
├─ __init__.py
├─ testmsg.py
├─ sub/
│ ├─ __init__.py
│ ├─ testprinter.py
where testmsg defines the following constant:
MSG = "Test message"
and sub/testprinter.py:
import testmsg
print("The message is: {0}".format(testmsg.MSG))
But I’m getting ImportError: No module named testmsg
Shouldn’t it be working since the package structure? I don’t really want to extend sys.path in each submodule and I don’t even want to use relative import.
What am I doing wrong here?
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:
Then run
TestApp/run_test.pyfirst:Then
TestApp/testapp/sub/testprinter.pycould do:More good hints here;