金字塔设置mako.进口不起作用

2024-03-29 06:08:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用mako.imports设置来避免在每个模板文件中导入模块。在

最初,我在每个模板的顶部都有一个模块级块,比如:

<%!
    import logging
%>

我想用.ini文件中的设置替换它:

^{pr2}$

这不起作用,因为当我尝试使用模板时,它只是抛出NameError: name 'logging' is not defined。在

看起来mako.进口甚至不会被调用,因为设置如下:

mako.imports = 'import SpamAndEggs'

不会抛出错误。在

我使用的是金字塔1.3和Mako 0.7.0。在


Tags: 模块文件nameimport模板isloggingmako
2条回答

好的,看看金字塔生成的Mako模板代码,它只是直接输出配置设置中的内容,引号,方括号等等。在

因此,语法必须是:

mako.imports = import logging

多个导入为:

mako.imports = import logging, some.other.module

而且不是这些:

mako.imports = 'import logging'
mako.imports = ['import logging', 'some.other.module']
mako.imports = import logging, import some.other.module

最后一个抛出一个mako.exceptions.SyntaxException,因为它不是有效的Python,但是前2个抛出的是一个静默的失败,什么也不做,因为它们只是输出一个文本作为一行代码。在

我并不是从documentation中推断出这一点的,它读作“Python语句的字符串列表,通常是单个的”import“行”(但可能我只是没有正确理解它)。在

感谢迈克·拜尔对Mako的post。在

pylons-discuss开始,语法是:

mako.imports = 
    import logging 
    import some.other.module 

导入由换行符分隔的语句。我认为文档应该用一个例子来说明这一点,因为Python用户的“字符串列表”是非常不同的。在

多亏了迈克·梅里克尔。在

相关问题 更多 >