在Mako模板中使用__future__导入

Hol*_*ter 5 python mako

我有

<%!
    from __future__ import division
%>
Run Code Online (Sandbox Code Playgroud)

在我的模板文件的最顶部.我收到错误:

SyntaxError: from __future__ imports must occur at the beginning of the file 
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

Mar*_*ers 4

from __future__ import您不能在 Mako 模板中使用语句。完全没有。

这是因为 Mako 模板被编译为 python 文件,为了使其正常工作,它在该 python 文件的顶部设置了一些初始结构:

# -*- encoding:ascii -*-
from mako import runtime, filters, cache
UNDEFINED = runtime.UNDEFINED
__M_dict_builtin = dict
__M_locals_builtin = locals
_magic_number = 7
_modified_time = 1348257499.1626351
_template_filename = '/tmp/mako.txt'
_template_uri = '/tmp/mako.txt'
_source_encoding = 'ascii'
_exports = []
Run Code Online (Sandbox Code Playgroud)

只有在初始设置之后,才会包含模板本身的任何代码。你from __future__ import division永远不会被放在第一位。

/您仍然可以通过将除法运算符的任一操作数转换为浮点数来使用浮点除法:

>>> 1 / 2
0
>>> float(1) / 2
0.5
Run Code Online (Sandbox Code Playgroud)

只要您遵循该解决方法,您就可以在division未来无需导入的情况下做得很好。