假設我們在同一個目錄中的本地Python模塊作爲模板鯖:./my_template.mako ./my_module/module.py
如何導入Mako模板中的本地模塊?
如何導入模塊到是應該從使用命令行渲染的Mako的模板鯖渲染?以下不起作用:
<%! import my_module.module %>
似乎本地路徑不是搜索路徑的一部分。但是,將每個自定義模塊放入全局路徑不是一種選擇。
假設我們在同一個目錄中的本地Python模塊作爲模板鯖:./my_template.mako ./my_module/module.py
如何導入Mako模板中的本地模塊?
如何導入模塊到是應該從使用命令行渲染的Mako的模板鯖渲染?以下不起作用:
<%! import my_module.module %>
似乎本地路徑不是搜索路徑的一部分。但是,將每個自定義模塊放入全局路徑不是一種選擇。
我的猜測是你缺少你./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
鯖渲染在/ usr/local/bin中或一些類似路徑的生活那。
這是一個Python腳本,並遵循Python解釋器的規則,以尋找進口模塊: 1.它的目錄(在/ usr/local/bin目錄) 2. PYTHONPATH環境變量 3.在安裝庫。
,你可以通過做得到這個工作:
$ ENV PYTHONPATH =。 mako-render