如果放在模块中,Python无法导入名称

时间:2012-12-12 11:50:02

标签: python import

  

可能重复:
  How to do relative imports in Python?

我正在经历一些对我来说非常随机的事情。

我有一个像这样的文件夹结构:

dir A
    __init__.py is empty
    a.py imports stuff and b.py
dir B
    __init__.py is empty
    b.py imports NOTHING

a.py引发错误(无法导入名称b)。这只发生在b是模块B的一部分时。 如果我将它移到目录之外,则不会发生导入错误。

任何帮助将不胜感激。我必须忽略一些事情。

1 个答案:

答案 0 :(得分:4)

您是否尝试过relative import

from ..B import b


编辑:如果包B所在的位置无关紧要,则不适用。

但是你没有描述你到底做了什么。您可能知道或不知道,有几种导入形式:

import module
import package # imports package.__init__ under the name package
import package.module
from package import module
import package
from module import component
from package.module import component

你只写

  

a.py导入东西和b.py

我不知道到底发生了什么:如果你试图

import b

失败,因为b位于包B中。

所以你需要一个
from B import b
import B.b

上面的评论提到了一个名字冲突。两个同名的软件包和模块中哪一个具有优先级取决于您所在的目录:'.'通常位于sys.path的开头,所以如果您直接位于utils目录下,可能会有不同的经历。