So this is my folder structure:
root
module_a
hello.py
submodule_a
hi.py
module_b
howdy.py
hello.py
calls a method in hi.py
. howdy.py
calls a method in hello.py
This is the content of each file:
hi.py
def myhi(hi):
print("myhi " hi)
hello.py
from submodule_a.hi import myhi
def myhello(hello):
myhi("myhello " hello)
howdy.py
from module_a.hello import myhello
def myhowdy(howdy):
myhello("myhowdy " howdy)
So the first issue is that howdy.py
cannot find module_a
, so I did sys.path.append(".")
inside howdy.py
.
But now the new problem is that, from howdy.py
, it cannot find submodule_a
from hello.py
.
How do you solve this issue? Is it possible to solve it without editing hello.py
at all?
I've tried messing with __init__.py
but I couldn't find anything that could solve the second problem.
CodePudding user response:
The most Pythonic way to import a module from another folder is to place an empty file named __init__.py
into that folder and use the relative path with the dot notation. For example, a module in the parent folder would be imported with from .. import module .
CodePudding user response:
create a __init__.py
file in module_a
and module_b
and submodule_a
then import the functions you want to use in another directory like these:
module_a/__init__.py
from hello import myhello
from submodule_a import myhi
module_a/submodule_a/__init__.py
from hi import myhi
module_b/__init__.py
from howdy import myhowdy