模块中的python导入类抛出ImportError

时间:2018-05-05 16:01:20

标签: python class import module spyder

很抱歉,如果这个问题看起来很简单,我在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。

1 个答案:

答案 0 :(得分:1)

感谢@zvone,我现在知道了我的错误:我只是错误了班级的名字......抱歉你的时间。

由于我无法删除这个问题,我会告诉你@vzone告诉我解决我遇到的两个问题的简单技巧:

import lib
print (lib)

让你检查lib所在的位置,因为你可能正在从其他地方加载一个类似命名的lib。我的test.bar发生了这件事 进一步使用

import lib
print (dir( lib))

为您提供了一个非常简洁的外观,让您可以更轻松地进行调试。

感谢小伙子,他在评论中做到了这一切。

相关问题