2015-02-11 31 views
1

假設我們在同一個目錄中的本地Python模塊作爲模板鯖:./my_template.mako ./my_module/module.py如何導入Mako模板中的本地模塊?

如何導入模塊到是應該從使用命令行渲染的Mako的模板鯖渲染?以下不起作用:

<%! import my_module.module %> 

似乎本地路徑不是搜索路徑的一部分。但是,將每個自定義模塊放入全局路徑不是一種選擇。

回答

0

我的猜測是你缺少你./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()} 

module.py

def foo(): 
    return '42' 

__init__.py

# Empty 

運行示例

>> python example.py 

42 
0

鯖渲染在/ usr/local/bin中或一些類似路徑的生活那。

這是一個Python腳本,並遵循Python解釋器的規則,以尋找進口模塊: 1.它的目錄(在/ usr/local/bin目錄) 2. PYTHONPATH環境變量 3.在安裝庫。

,你可以通過做得到這個工作:

$ ENV PYTHONPATH =。 mako-render