use*_*901 3 python import module mako local
假设我们在与 mako 模板相同的目录中有一个本地 python 模块: ./my_template.mako ./my_module/module.py
如何将该模块导入到应该使用 mako-render 从命令行渲染的 Mako 模板中?以下不起作用:
<%! import my_module.module %>
Run Code Online (Sandbox Code Playgroud)
本地路径似乎不是搜索路径的一部分。但是,将每个自定义模块放入全局路径不是一种选择。
我的猜测是__init__.py您的 ./my_module 文件夹中缺少my_module 成为包所需的 ./my_module 文件夹。这个文件可以留空,它只需要存在来创建包。
这是一个执行您描述的工作的示例。
目录布局
.
??? example.py
??? my_module
? ??? __init__.py <----- You are probably missing this.
? ??? module.py
??? my_template.mako
Run Code Online (Sandbox Code Playgroud)
文件
例子.py
from mako.template import Template
print Template(filename='my_template.mako').render()
Run Code Online (Sandbox Code Playgroud)
my_template.mako
<%! import my_module.module %>
${my_module.module.foo()}
Run Code Online (Sandbox Code Playgroud)
模块.py
def foo():
return '42'
Run Code Online (Sandbox Code Playgroud)
__init__.py
# Empty
Run Code Online (Sandbox Code Playgroud)
运行示例
>> python example.py
42
Run Code Online (Sandbox Code Playgroud)