1

我有这个包结构:

widget/
    __init__.py
    core.py
    extension.py

__init__.py 为空。

core.py 包含以下内容:

import widget.extension as extension

它有效,但感觉就像我在绕过包,只是从全局路径中导入它(即爬出它只是为了回头看它)。如果我只是import extension在 core.py 中它不起作用。这有关系吗?我一开始就错了吗?我应该把这两个模块都拉进去__init__.py吗?

4

1 回答 1

1

我假设您使用的是 Python 3;在 Python 2 中,import extension它会起作用,因为 Python 2 在寻找全局绝对引用之前会先寻找本地的相对导入。

您还有两个选择:

from widget import extension

from . import extension

后者相对于当前包导入,它允许您重命名widget包而无需更新所有内部导入。你使用的是风格和品味的问题。

于 2013-07-29T11:50:13.230 回答