假设我们在与mako模板相同的目录中有一个本地python模块:./my_template.mako ./my_module/module.py
如何将该模块导入到应该使用mako-render从命令行渲染的Mako模板?以下不起作用:
<%! import my_module.module %>
似乎本地路径不是搜索路径的一部分。但是,将每个自定义模块放入全局路径不是一种选择。
答案 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