web-dev-qa-db-fra.com

Aucun module nommé '__main __. Demo'; '__main__' n'est pas un package python3

Si j'exécute main.py ça marche bien, le problème est quand j'exécute 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")

Erreur: from .demo import demoprint

ModuleNotFoundError: No module named '__main__.demo'; '__main__' is not a package

Dois-je avoir __init__.py?

5
andreas Viena

Si vous supprimez le ., ça devrait marcher. demo2.py devient:

from demo import demoprint # instead of `from .demo import demoprint`

def demo2_print():
    print("demo2")
    demoprint()

demo2_print()

Vous pouvez maintenant exécuter %run ludikDriver/demo2.py en ipython par exemple et vous obtenez:

demo2
demo

Pour plus de détails, la section "Importations" de cet article pourrait vous aider.

8
Youness Bennani