1

可能重复:
如何在 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 的一部分时。如果我将它移到目录之外,则不会发生导入错误。

任何帮助,将不胜感激。我一定是忽略了什么。

4

1 回答 1

4

您是否尝试过相对导入

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生活在 package 中B。所以你需要一个

from B import b
import B.b

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

于 2012-12-12T11:53:30.717 回答