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 |
知道我在这里做错了什么吗?我只是重新命名了我的整个文件夹结构,因为我把这个模块结构搞得太糟糕了,但我想我已经接近它应该是什么样子了……
似乎有一个循环导入。从
这显然是一个循环导入,Python不允许这样做。
它在同一个文件夹中,请使用相对的包名称(无论如何,这样做是一个很好的实践):
1 | from .engine import Engine |
您的代码目录是一个包。确保上面的目录,即根据您的错误消息判断的
通过选择项目并单击鼠标右键打开上下文菜单,然后选择"属性"。选择pydev-pythonpath,然后从那里选择源文件夹选项卡。检查上面提到的目录是否存在;如果没有按"添加源文件夹",请从对话框中选择它,然后按"确定"。