I\'m learning Python, and I can\'t figure out how imports in __init__.py work.
I understand from the Python tutorial that the __init__.py f
First, you have to understand how import alone work:
import test.submodule.do_something
Would try to load do_something from submodule itself loaded from test.
You want to load something from subpackage, so start with that:
import subpackage
Fine, subpackage/__init__.py is loaded.
Now, you want the do_something() function which is in the file (a "module") hello_world.py. Easy:
from subpackage.hello_world import do_something
And you are done! Just read this line loud, it does exactly what it says: import do_something from the module hello_world which is in the subpackage package.
Try that in test.py
from subpackage.hello_world import do_something
do_something()
It should work just fine.
Now, the second issue:
__init__.py won't be called in package/ since you don't use package/ as a package. __init__.py will be used if you do an import of package/ or anything in it, for eg:
from package import test
Otherwise, it won't be loaded at all.
However, if you want to load do_something() on the import of subpackage, put from submodule.hello_word import do_something in subpackage/__init__.py, and then, in you test.py, do a import subpackage.