我有这个包结构:
widget/
__init__.py
core.py
extension.py
__ init__.py为空。
core.py包含:
import widget.extension as extension
它有效,但感觉就像我正在踩着包裹而只是从全局路径中导入它(即爬出它只是为了回顾它)。如果我只是在core.py中import extension
它不起作用。这有关系吗?我错了吗?我是否应该将这两个模块都移到__init__.py
?
答案 0 :(得分:1)
我假设您使用的是Python 3;在Python 2中,import extension
将起作用,因为Python 2在查找全局绝对引用之前将首先查找本地的相对导入。
您还有两个选择:
from widget import extension
和
from . import extension
后者相对于当前包导入,这使您可以重命名widget
包,而无需更新所有内部导入。你使用的是风格和品味。