子包和包含模块之间的循环导入

时间:2011-09-08 13:48:12

标签: python import package

  

可能重复:
  Cyclic module dependencies and relative imports in Python

我试图了解子包和相对导入在Python中是如何工作的。我使用的是Python 3.2。

以下示例包含该程序包中的程序包(package)和模块(package/module.py),其中该模块和程序包的init模块(package/__init__.py)使用每个程序包中的成员其他(仅显示import语句)。 test.py启动package,其sys.path中包含package/__init__.py: from . import module 的目录。

package/module.py:
    import package

test.py:
    import package

package

这很好用。但是当我将lib移动到另一个包(lib/__init__.py: # empty )时,它会中断:

lib/package/__init__.py:
    from . import module

package/module.py:
    from .. import package

test.py:
    from lib import package

test.py

运行Traceback (most recent call last): File "test.py", line 1, in <module> from lib import package File "/Users/ims/test/lib/package/__init__.py", line 1, in <module> from . import module File "/Users/ims/test/lib/package/module.py", line 1, in <module> from .. import package ImportError: cannot import name package 将失败并显示以下堆栈跟踪:

{{1}}

我的问题是:

  • 循环导入在顶级包内但不在子包内的原因是什么?
  • 这个问题有解决办法吗?

0 个答案:

没有答案