【发布时间】:2017-02-01 20:53:27
【问题描述】:
我有两个包,a 和 b。它们在同一个目录中,b 依赖于a(但不是相反)。当我在b\some_package.py 中运行from . import a 时,我得到ImportError: cannot import name a。当我运行import a(从相应的目录)时,没有错误。两个包都有__init__.pys。 This answer 很好地解释了为什么,但没有提到如何解决这个问题。我该如何解决这个问题?
文件结构:
parent_directory
a
__init__.py
module_in_a.py
b
__init__.py
module_in_b.py (this imports a)
【问题讨论】:
-
这些模块实际上是包的一部分吗?你没有提到任何包裹。为什么要尝试执行相对导入?
-
@user2357112 我又把这两个弄混了。我会解决的
-
好吧,你为什么要尝试使用相对导入来导入完全不同的包?相对导入适用于
b.foo导入b.bar,而不是b.foo导入a等情况。 -
@user2357112 我在同一个目录中有两个包。一个模块需要访问另一个模块。如果没有相对导入,我该如何做到这一点,为什么不使用呢?
-
使用常规导入
import a,就像您已经尝试过的那样。相对导入根本不是这项工作的工具。他们的角色不是你想象的那样。
标签: python python-2.7 import python-import