我有一个简单的目录结构,就像这样:
MyProject
--main.py
--lib #that's a directory/package
----__init__.py
----view.py
----common_lib.py
----other irrelevant modules...
在 main.py 中:
from lib import view
导致以下错误:
ImportError: cannot import name view
如果相反,我会这样写:
from lib.view import *
此导入成功通过,但下一次失败发生在 view.py 中,因为:
from common_lib import Comments, Locations, ScreenData, ProgressSignal
原因:
ImportError: No module named 'common_lib'
而且从目录结构来看,common_lib.py和view.py在同一个目录下,怎么会找不到呢?
为什么“from x import y”不起作用,而“from x.y import *”起作用?
'__init__.py
' 完全是空的顺便说一句。我正在使用 Python 3.3 32 位。
更烦人的是,同样的程序在 2 天前运行。我正在 IDLE 中测试一些代码,当我认为代码已准备好包含在项目中时,将其粘贴到 PyDev 中,我被这个错误震惊了。我对我的目录或模块没有任何更改。
此外,更奇怪的是,单独运行 view.py 和 common_lib.py(不导入)运行得很好。如果确实存在任何问题,它应该会产生错误。
谢谢。非常感谢任何建议。
最佳答案
由于main.py
还在顶层,所以需要使用lib.common_lib
:
from lib.common_lib import Comments, Locations, ScreenData, ProgressSignal
因为上一行 from lib import view
没有开始从 lib
内部寻找模块。
关于Python 奇怪的导入行为 : import x. y 有效,from x import y 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139113/