If I execute main.py
it works fine, the problem is when I execute demo2.py
|myPackage
|subPackage
demo.py
demo2.py
main.py
main.py
from ludikDriver.demo2 import demo2_print
demo2_print()
demo2.py
from .demo import demoprint
def demo2_print():
print("demo2")
demoprint()
demo2_print()
demo.py
def demoprint():
print("demo")
Error: from .demo import demoprint
ModuleNotFoundError: No module named '__main__.demo'; '__main__' is not a package
Should I have __init__.py
?
In Python, the special name __main__ is used for two important constructs: the name of the top-level environment of the program, which can be checked using the __name__ == '__main__' expression; and. the __main__.py file in Python packages.
If you drop the .
, it should work. demo2.py
becomes:
from demo import demoprint # instead of `from .demo import demoprint`
def demo2_print():
print("demo2")
demoprint()
demo2_print()
Now you can run %run ludikDriver/demo2.py
in ipython for instance and you get:
demo2
demo
For more details, the section "Imports" of this article might help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With