Python无法导入名称< class>

Python cannot import name <class>

我整晚都在努力解决导入错误。

这是一个常见的问题,但以前的问题都不能完全回答我的问题。

我正在使用pydev(一个Eclipse插件)和库kivy(一个python库)

我的文件结构设置如下:

1
2
3
4
5
<wyn>
    __init__.py
    main.py
    engine.py
    main_menu_widget.py

"code"保存在eclipse文件夹"myproject"中,但它不是一个包,所以我没有包含它。

文件如下:

主.py

1
2
3
4
5
# main.py
from code.engine import Engine

class MotionApp(App):
    # Ommited

发动机.py

1
2
3
4
5
# engine.py
from code.main_menu_widget import MainMenuWidget

class Engine():
    # Ommited

主菜单窗口小部件.py

1
2
3
4
5
# main_menu_widget.py
from code.engine import Engine

class MainMenuWidget(Screen):
    pass

我收到的详细错误是:

1
2
3
4
5
6
7
 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

知道我在这里做错了什么吗?我只是重新命名了我的整个文件夹结构,因为我把这个模块结构搞得太糟糕了,但我想我已经接近它应该是什么样子了……


似乎有一个循环导入。从engine.py进口main_menu_widget,从main_menu_widget进口engine

这显然是一个循环导入,Python不允许这样做。


它在同一个文件夹中,请使用相对的包名称(无论如何,这样做是一个很好的实践):

1
from .engine import Engine


您的代码目录是一个包。确保上面的目录,即根据您的错误消息判断的C:\MyProject在您的pythonpath中。

通过选择项目并单击鼠标右键打开上下文菜单,然后选择"属性"。选择pydev-pythonpath,然后从那里选择源文件夹选项卡。检查上面提到的目录是否存在;如果没有按"添加源文件夹",请从对话框中选择它,然后按"确定"。