Python无法导入名称<;类别>;
为了解决一个导入错误,我已经绞尽脑汁了一个晚上 这是一个常见的问题,但之前的问题都不能完全回答我的问题 我正在使用PyDev(一个Eclipse插件)和库Kivy(一个Python库) 我的文件结构设置如下:Python无法导入名称<;类别>;,python,import,module,kivy,Python,Import,Module,Kivy,为了解决一个导入错误,我已经绞尽脑汁了一个晚上 这是一个常见的问题,但之前的问题都不能完全回答我的问题 我正在使用PyDev(一个Eclipse插件)和库Kivy(一个Python库) 我的文件结构设置如下: <code> __init__.py main.py engine.py main_menu_widget.py “代码”保存在eclipse文件夹“MyProject”中,但它不是一个包,所以我没有包含它 这些文件如下所示: <code
<code>
__init__.py
main.py
engine.py
main_menu_widget.py
“代码”保存在eclipse文件夹“MyProject”中,但它不是一个包,所以我没有包含它
这些文件如下所示:
<code>
__init__.py
main.py
engine.py
main_menu_widget.py
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
主菜单\u 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
回溯(最近一次呼叫最后一次):
文件“C:\MyProject\code\main.py”,第8行,在
从code.engine导入引擎
文件“C:\MyProject\code\engine.py”,第6行,在
从code.main\u菜单\u小部件导入MainMenuWidget
文件“C:\MyProject\code\main\u menu\u widget.py”,第3行,在
从code.engine导入引擎
知道我做错了什么吗?我刚刚重新命名了我的整个文件夹结构,因为我把这个模块结构搞砸了,但我想我已经接近它的外观了….它在同一个文件夹中,请使用相对的包名(无论如何这样做是一个很好的做法): 您的代码目录是一个包。从错误消息判断,确保它上面的目录,即
C:\MyProject
,位于PYTHONPATH中
通过选择项目并单击鼠标右键打开关联菜单,然后选择属性。选择PyDev-PYTHONPATH,然后从中选择SourceFolders选项卡。
检查上述目录是否存在;如果不是,请按“添加源文件夹”,从对话框中选择它,然后按“确定”。似乎有循环导入。 从
engine.py
导入main\u菜单小部件
,而从main\u菜单小部件
导入engine
这显然是python不允许的循环导入。不是code.engine?这不是更有意义吗,因为它都在根“代码”包中?通常在从您自己的项目导入内容时使用相对导入是一个很好的做法。这很公平。我只是试了一下,没有运气,它抛出了同样的错误,同样的线条。“无法导入名称引擎”哦,是的,你有一个循环依赖,主菜单依赖于Engine.py和vica vercaYep,这是一个循环依赖。这也是一个糟糕的单身汉。谢谢,我为此发布了一个新问题,但确实找到了一种绕过的方法。但愿错误消息更具描述性!Yay Python 2可能会重复告诉您这个问题