8

Вопрос по kivy, import, module, python – Python не может импортировать имя <класс>

большую часть ночи боролся, пытаясь решить проблему с импортом.

Это общая проблема, но ни один предыдущий вопрос не отвечает на мой вопрос.

Я использую PyDev (плагин Eclipse) и библиотеку Kivy (библиотека Python)

У меня есть файловая структура, настроенная так:


    __init__.py
    main.py
    engine.py
    main_menu_widget.py

код" проводится в папке «Затмение»Мой проект" но это'не пакет, поэтому я нет включить это.

Файлы выглядят так:

main.py

# main.py
from code.engine import Engine

class MotionApp(App):
    # Ommited

engine.py

# engine.py
from code.main_menu_widget import MainMenuWidget

class Engine():
    # Ommited

main_menu_widget.py

# main_menu_widget.py
from code.engine import Engine

class MainMenuWidget(Screen):
    pass

Полная ошибка, которую я получаю, такова:

 Traceback (most recent call last):
   File "C:\MyProject\code\main.py", line 8, in 
     from code.engine import Engine
   File "C:\MyProject\code\engine.py", line 6, in 
     from code.main_menu_widget import MainMenuWidget
   File "C:\MyProject\code\main_menu_widget.py", line 3, in 
     from code.engine import Engine

Есть идеи, что я тут не так сделал? Я просто переименовал всю свою структуру папок, потому что я испортил эту структуру модуля так плохо, но я думаю, чтом близко к тому, как это должно выглядеть ....

<span>Возможный дубликат<a href="http://stackoverflow.com/questions/9252543/importerror-cannot-import-name-x">ImportError: Невозможно импортировать имя X</a></span>

May 18, 2016, 4:32 PMотBaum mit Augen

3ответа

9

Кажется, есть круговой импорт. отengine.py вы импортируетеmain_menu_widget в то время как изmain_menu_widgetвы импортируете.engine

Это явно циклический импорт, который не разрешен Python.

5

Это'в той же папке, используйте относительное имя пакета (этов любом случае, это хорошая практика)

from .engine import Engine
1

Ваш кодовый каталогявляется упаковка. Убедитесь, что каталог над ним, т.е.C:\MyProject судя по вашим сообщениям об ошибках, находится в вашей PYTHONPATH.

Откройте контекстное меню, выбрав свой проект и щелкнув мышью.с правой кнопкой, затем выберитесвойства, ВыбратьPyDev - PYTHONPATH и оттудаИсходные папки Вкладка. Проверьте, что упомянутый выше каталог присутствует; если нетт прессДобавить исходную папкувыберите его в диалоговом окне и нажмитеХОРОШО.

RelatedQuestions