我大部分时间都在努力解决导入错误。
这是一个常见问题,但之前没有任何问题可以解决我的问题。
我正在使用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
知道我在这里做错了吗?我刚刚重命名了我的整个文件夹结构,因为我搞砸了这个模块结构这么糟糕,但我觉得我接近它应该看起来......
答案 0 :(得分:10)
似乎有一个循环导入。
来自engine.py
的{{1}}来自导入main_menu_widget
的{{1}}。
这显然是循环导入,python不允许。
答案 1 :(得分:5)
它位于同一个文件夹中,使用相对包名称(无论如何这是一个很好的做法):
from .engine import Engine
答案 2 :(得分:1)
您的代码目录是包。确保它上面的目录,即C:\MyProject
从您的错误消息中判断,是在您的PYTHONPATH中。
通过选择项目并单击鼠标右键打开上下文菜单,然后选择属性。选择 PyDev - PYTHONPATH ,然后从源文件夹选项卡中选择。 检查上面提到的目录是否存在;如果没有按添加源文件夹,请从对话框中选择它,然后按确定。