Python无法导入名称<class> </class>

时间:2013-03-04 03:15:00

标签: python import module kivy

我大部分时间都在努力解决导入错误。

这是一个常见问题,但之前没有任何问题可以解决我的问题。

我正在使用PyDev(Eclipse插件)和库Kivy(Python库)

我的文件结构设置如下:

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

“code”保存在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 个答案:

答案 0 :(得分:10)

似乎有一个循环导入。 来自engine.py的{​​{1}}来自导入main_menu_widget的{​​{1}}。

这显然是循环导入,python不允许。

答案 1 :(得分:5)

它位于同一个文件夹中,使用相对包名称(无论如何这是一个很好的做法):

from .engine import Engine

答案 2 :(得分:1)

您的代码目录包。确保它上面的目录,即C:\MyProject从您的错误消息中判断,是在您的PYTHONPATH中。

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