Python не может импортировать имя <class>

Я большую часть ночи занимаюсь борьбой с проблемой импорта.

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

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

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

<code> __init__.py main.py engine.py main_menu_widget.py 

«код» хранится в папке eclipse «MyProject», но это не пакет, поэтому я его не включил.

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

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 <module> from code.engine import Engine File "C:\MyProject\code\engine.py", line 6, in <module> from code.main_menu_widget import MainMenuWidget File "C:\MyProject\code\main_menu_widget.py", line 3, in <module> from code.engine import Engine 

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

3 Solutions collect form web for “Python не может импортировать имя <class>”

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

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

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

 from .engine import Engine 

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

Откройте контекстное меню, выбрав свой проект и нажав правую кнопку мыши, затем выберите « Свойства» . Выберите PyDev – PYTHONPATH и оттуда вкладка « Исходные папки ». Убедитесь, что указан каталог, указанный выше; если он не нажимает кнопку « Добавить исходную папку» , выберите его в диалоговом окне и нажмите « ОК» .

  • Как получить значение textinput с Kivy
  • Регулировка экспозиции (яркость / контрастность) на основе гистограммы с использованием Python
  • Kivy: drag n drop, получить путь к файлу
  • Порядок объектов в StackLayout (Kivy)
  • Разница между Kivy и Java для приложений для Android
  • Как сделать GPS-приложение для android с помощью kivy, pyjnius?
  • Размеры элементов не обновляются при загрузке приложения в Киви
  • Python + kivy + SQLite: как использовать их вместе
  • Python - лучший язык программирования в мире.