我的包装结构如下:
parent_package/
__init__.py
module/
__init__.py
在父母__init__.py
中,我有:
from __future__ import division
print(3/2) # 1.5
但是,当我尝试在其子级中重用导入时,划分不会生效。在模块的__init__.py
中:
from parent_package.__init__ import division
print(3/2) # 1!
答案 0 :(得分:1)
您误解了__future__
模块的工作方式。 __future__
是python解释器中内置的一个特殊模块,可更改解释器解析和/或执行代码的方式。为了使__future__
导入具有所需的效果,必须的格式为
from __future__ import <feature>
(有关详细说明,请参见PEP 236。)
但是,除了解释器内置的__future__
模块之外,__future__
也 a real module in the standard library!导入from __future__ import divison
实际上有两件事:启用新的划分行为,,并且从真实的__future__
模块导入功能说明。如果您在导入后查看division
的值,就会看到以下内容:
>>> from __future__ import division
>>> division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
执行from parent_package.__init__ import division
时,您只是在导入此变量。但是您没有启用新的除法行为。