Python不能导入名称(Python cannot import name )

2019-08-17 07:03发布

我已经摔了大半夜试图解决一个导入错误。

这是一个常见的问题,但没有先前的问题相当回答我的问题。

我使用的PyDev(一个Eclipse插件),和库Kivy(一个Python库)

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

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

“代码”举行的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

任何想法,我做错了什么吗? 我只是改名为我的整个文件夹结构,因为我搞砸了这个模块结构如此糟糕,但我想我靠近它应该是什么样子....

Answer 1:

似乎有一个圆形的进口。 从engine.py要导入main_menu_widget而从main_menu_widget要导入engine

这显然这是不Python允许圆形进口。



Answer 2:

它是在同一个文件夹中,使用相对包名称(这是一个很好的做法,以便做反正):

from .engine import Engine


Answer 3:

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

打开选择项目并点击鼠标的右键快捷菜单,然后选择属性 。 选择的PyDev - PYTHONPATH,并从那里源文件夹选项卡。 检查上述目录存在; 如果不按添加源文件夹 ,对白,然后按OK选择它。



文章来源: Python cannot import name