I have a directory with a number of .py
files in it. each file defines some classes. I also have an empty __init__.py
in the directory.
Fo
You need an __init__.py
in the myproject directory too. So your module structure should be:
myproject
__init__.py
mymodule
__init__.py
api.py
models.py
views.py
The problem is submodules are not automatically imported. You have to explicitly import the api
module:
import myproject.mymodule.api
print myproject.mymodule.api.MyClass
If you really insist on api
being available when importing myproject.mymodule
you can put this in myproject/mymodule/__init__.py
:
import myproject.mymodule.api
Then this will work as expected:
from myproject import mymodule
print mymodule.api.MyClass
Modules don't work like that.
from myproject.mymodule import api
print api.MyClass
If you are an idiot, like me, then also check whether you didn't name your python file the same as the module you are trying to import.