【发布时间】:2017-02-25 03:03:58
【问题描述】:
这是我的第一个 stackoverflow 问题。我确实搜索了一个答案,但找不到一个明确的答案。这是情况。我有这样的结构:
myapp
package/
__init.py__
main.py
mod1.py
mod2.py
现在,在这种情况下,我从 main.py 导入 mod1.py,它也需要通过 mod2.py 导入。一切正常,我的导入如下所示:
main.py:
from mod1 import Class1
mod2.py:
from mod1 import Class1
但是,我需要将 main.py 移动到主文件夹结构中,如下所示:
myapp
main.py
package/
__init.py__
mod1.py
mod2.py
现在发生的事情是,我当然需要更改在 main.py 中导入 mod1 的方式:
from package.mod1 import Class1
然而,为了不出现“ImportError: No module named 'mod1'”,我在 mod2.py 中进行了相同类型的更改:
from package.mod1 import Class1
这是为什么呢? mod2 与 mod1 在同一个文件夹/pakcage 中,那么为什么 - 在修改 main.py 时 - 我希望在 mod2 中修改我的导入?
【问题讨论】:
-
主要导入 mod2 吗?
-
@rassar:是的,确实如此。
-
所以发生这种情况的原因是因为 main 和 mod2 都想导入 mod1 并且 main 在层次结构中更高。见stackoverflow.com/questions/15174730/…
-
你试过
from .mod1 import mod2吗? -
@rassar:谢谢,我想我现在明白了。只是为了确认我的理解是否正确——首先运行的模块是顶级模块,随后发生的所有导入都与该模块的位置有关(在这种情况下为 main.py)——这是正确的吗?