【问题标题】:How do I import a local module in a Mako template?如何在 Mako 模板中导入本地模块?
【发布时间】:2015-02-11 16:36:52
【问题描述】:

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

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

<%! import my_module.module %>

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

【问题讨论】:

    标签: python import module local mako


    【解决方案1】:

    我的猜测是您的 ./my_module 文件夹中缺少 __init__.py ,这是 my_module 成为软件包所必需的。这个文件可以留空,它只需要存在就可以创建包。

    这是一个按照您描述的工作示例。

    目录布局

    .
    ├── 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()}
    

    模块.py

    def foo():
        return '42'
    

    __init__.py

    # Empty
    

    运行示例

    >> python example.py
    
    42
    

    【讨论】:

      【解决方案2】:

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

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

      你可以这样做:

      $ env PYTHONPATH=. mako渲染

      【讨论】:

        猜你喜欢
        • 2016-08-02
        • 2014-01-14
        • 2012-09-14
        • 2021-09-20
        • 2020-08-30
        • 2023-04-05
        • 2011-11-18
        • 2018-10-07
        • 2012-11-11
        相关资源
        最近更新 更多