web-dev-qa-db-ja.com

「__main __。demo」というモジュールはありません。 '__main__'はパッケージpython3ではありません

main.pyを実行すると問題なく動作しますが、問題は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")

エラー:from .demo import demoprint

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

__init__.pyが必要ですか?

5
andreas Viena

.をドロップすると、動作するはずです。 demo2.pyは次のようになります。

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

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

demo2_print()

これで、たとえばipythonで%run ludikDriver/demo2.pyを実行でき、次のようになります:

demo2
demo

詳細については、 この記事 の「インポート」セクションが役立つ場合があります。

8
Youness Bennani