可能重复:
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}}
我的问题是: