«Модуль без имени» при импорте из другого пакета в python3.6 - PullRequest
0 голосов
/ 02 июля 2018

Если я выполняю demo2.py, он работает нормально, проблема заключается в том, что я выполняю main.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")

Ошибка: No module named 'demo'

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Ваша ошибка связана с верхней строкой в ​​demo.py:

из демо-версии импорта demoprint

Нет модуля с именем demo

0 голосов
/ 02 июля 2018

Ваши модули нуждаются в контексте самих себя. Вы должны иметь файл "__init__.py" в subPackage и myPackage . Тогда ваш импорт должен быть относительным:

from . import demo

ИЛИ больше в контексте вашего примера:

from .demo import demoprint
0 голосов
/ 02 июля 2018

Просто используйте относительный импорт, как предложено в pep 328 .

from .demo import demoprint

Вы можете сделать для другого пакета. Так же, как относительные пути.

...