pyramid_mako找不到模板。是否有一个钩子来查找被调用的目录/文件?

时间:2015-06-15 18:41:09

标签: python templates mako

这个真的让我感到烦恼。

首先说一切都在我的本地机器上完美运行。然而,在服务器上,无论我做什么最终都在"无法找到uri的模板:..."

在我的本地计算机上,我在Mac OS X上使用Linux VM。我已经研究过文件名之间的区分大小写问题。没有骰子。

我通过在本地调用文件来正常工作。

为了确认,我切换到使用mako.directories = app:templates配置并将我的模板目录从app.views包中移动到app:template文件夹 - 这是一个小写的新文件夹名称。

此配置无效。

我决定更明确。

所以我通过这样做来调用我的mako文件:

 @view_config(renderer='myapp:templates/template1.mak')
 def template1(self):
      pass

仍然没有骰子。

尝试在当地明确表示。

 @view_config(renderer='templates/template2.mak')
 def template2(self):
      pass

仍然失败。

当然,在配置中使用mako.directories时,它仍然有效。

 @view_config(renderer='template3.mak')
 def template3(self):
      pass

有没有办法挂钩到这个看到被调用的特定文件路径? 比模板/ template.mak'?

大得多的东西

作为参考,这些是Pyramid TopLevelException中的URI看起来像respectivley:

Exception
=========
"Can not locate template for uri %r" % uri)
mako.exceptions.TopLevelLookupException: Can not locate template for uri
========

'app:templates/template1.mak    
'app.views:templates/template2.mak'

1 个答案:

答案 0 :(得分:0)

我弄明白为什么它不能正常工作!

在加载Pyramid应用之前,我在服务器上运行python setup.py install。所有python源代码都移动到我的VENV中的site-packages文件夹中,但(重要的是)我的MAKO文件不会移动到那里。

当我运行python setup.py develop时,因为我的软件包是作为符号链接安装的,所以我的MAKO文件仍然存在于我的项目中。

以为名称会另外表示,无法安装使用非python文件(例如模板)的金字塔项目!它们必须保持在发展状态。

如果我们可以使用python setup.py develop运行这些内容,请在评论中向我说明!我可能会遗漏一些东西。

编辑1:

这是正确的方向,但我不确定如何使用它:

https://docs.python.org/2/distutils/setupscript.html#installing-package-data

(编辑3):Including non-Python files with setup.py

编辑2:

这引起了我的Preparing a pyramid app for production