如何在Mako模板中导入本地模块?

时间:2015-02-11 16:36:53

标签: python import module local mako

假设我们在与mako模板相同的目录中有一个本地python模块:./my_template.mako ./my_module/module.py

如何将该模块导入到应该使用mako-render从命令行渲染的Mako模板?以下不起作用:

<%! import my_module.module %>

似乎本地路径不是搜索路径的一部分。但是,将每个自定义模块放入全局路径不是一种选择。

2 个答案:

答案 0 :(得分:2)

我的猜测是你错过了my_module所需的./my_module文件夹中的__init__.py。此文件可以留空,只需要存在即可创建包。

这是一个做你所描述的工作范例。

目录布局

.
├── example.py
├── my_module
│   ├── __init__.py    <----- You are probably missing this.
│   └── module.py
└── my_template.mako

<强>文件

example.py

from mako.template import Template
print Template(filename='my_template.mako').render()

my_template.mako

<%! import my_module.module %>
${my_module.module.foo()}

module.py

def foo():
    return '42'

__初始化__。PY

# Empty

运行示例

>> python example.py

42

答案 1 :(得分:0)

mako-render存在于/ usr / local / bin或类似的路径中。

它是一个python脚本,遵循python解释器的规则来查找导入模块:  1.其目录(/ usr / local / bin)  2. PYTHONPATH环境变量  3.在安装库中。

你可以这样做:

$ env PYTHONPATH =。 mako-render