很抱歉,如果这个问题看起来很简单,我在java方面很有经验,但绝对不是在python中,而且在python中输入的方式对我来说仍然是一个很大的错误。
问题在于,从我从互联网上收集到的内容,我觉得我已经完成了我的脚本在文件夹中导入模块所需的一切。
我的项目看起来像这样
/omme
start.py
/foo
__init__.py #is empty
bar.py #has a class named BarClass
start.py只有这个
from foo.bar import BarClass
b = BarClass()
当我在spyder IDE中运行此脚本时,我得到了这个
runfile('/home/nathan/Documents/workspace/omme/start.py', wdir='/home/nathan/Documents/workspace/omme')
Reloaded modules: foo.bar
Traceback (most recent call last):
File "<ipython-input-38-c3b9ba6593fb>", line 1, in <module>
runfile('/home/nathan/Documents/workspace/omme/start.py', wdir='/home/nathan/Documents/workspace/omme')
File "/home/nathan/.anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "/home/nathan/.anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/home/nathan/Documents/workspace/omme/start.py", line 1, in <module>
from foo.bar import BarClass
ImportError: cannot import name 'BarClass'
然后甚至更奇怪,如果我用 foo.bar
替换 test.bar
它会抛出一个ModuleNotFoundException(我怀疑有些ide shenanigans)。
我做错了什么?
感谢你的时间,自从nathan。
答案 0 :(得分:1)
感谢@zvone,我现在知道了我的错误:我只是错误了班级的名字......抱歉你的时间。
由于我无法删除这个问题,我会告诉你@vzone告诉我解决我遇到的两个问题的简单技巧:
import lib
print (lib)
让你检查lib所在的位置,因为你可能正在从其他地方加载一个类似命名的lib。我的test.bar
发生了这件事
进一步使用
import lib
print (dir( lib))
为您提供了一个非常简洁的外观,让您可以更轻松地进行调试。
感谢小伙子,他在评论中做到了这一切。