Python no puede importar el nombre

He estado luchando la mayor parte de la noche tratando de resolver un error de importación.

Este es un problema común, pero ninguna pregunta anterior responde a mi problema.

Estoy usando PyDev (un complemento de Eclipse) y la biblioteca Kivy (una biblioteca de Python)

Tengo una estructura de archivos configurada de esta manera:

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

"código" se encuentra dentro de la carpeta de eclipse "MyProject", pero no es un paquete, así que no lo incluí.

Los archivos se ven así:

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 

El error que recibo, con todo detalle, es:

  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 

¿Alguna idea de lo que hice mal aquí? Acabo de renombrar mi estructura de carpetas completa porque arruiné la estructura de este módulo tan mal, pero creo que estoy cerca de cómo debería verse ...

Parece que hay una importación circular. desde engine.py está importando main_menu_widget mientras que desde main_menu_widget está importando engine .

Eso es claramente una importación circular que no está permitida por Python.

está en la misma carpeta, use un nombre de paquete relativo (es una buena práctica hacerlo de todos modos):

 from .engine import Engine 

Su directorio de código es un paquete. Asegúrese de que el directorio que se encuentra sobre él, es decir, C:\MyProject juzgar por sus mensajes de error, esté en su PYTHONPATH.

Abra el menú contextual seleccionando su proyecto y haciendo clic en el botón derecho del mouse, luego seleccione Propiedades . Seleccione PyDev – PYTHONPATH y desde allí la pestaña Carpetas de origen . Compruebe que el directorio mencionado anteriormente está presente; si no está, presione Agregar carpeta de origen , selecciónela en el diálogo y presione OK .