10

我大半夜都在努力解决导入错误。

这是一个常见问题,但之前没有一个问题能完全回答我的问题。

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

我有一个像这样设置的文件结构:

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

“代码”保存在 Eclipse 文件夹“MyProject”中,但它不是一个包,所以我没有包含它。

文件如下所示:

主文件

# main.py
from code.engine import Engine

class MotionApp(App):
    # Ommited

引擎.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

知道我在这里做错了什么吗?我刚刚重命名了我的整个文件夹结构,因为我把这个模块结构搞砸了,但我认为我已经接近它应该看起来的样子......

4

3 回答 3

12

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

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

于 2015-11-02T09:42:15.340 回答
5

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

from .engine import Engine
于 2013-03-04T03:17:25.673 回答
1

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

通过选择您的项目并单击鼠标右键打开上下文菜单,然后选择Properties。选择PyDev - PYTHONPATH并从那里选择源文件夹选项卡。检查上述目录是否存在;如果不是按Add source folder,请从对话框中选择它并按OK

于 2013-05-22T09:20:31.197 回答