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

pyramid_mako not finding templates. is there a hook to find the directory / file being called?

这个真的很烦我。

首先会说在我的本地机器上一切正常。然而,在服务器上,无论我做什么,最终都会出现 "Can not locate template for uri: ..."

在我的本地机器上,我在 Mac OS X 上使用 Linux 虚拟机。我研究了文件名之间的区分大小写问题。没有骰子。

我最初通过在本地调用文件使一切正常。

为了确认,我切换到使用 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

有没有一种方法可以挂钩它以查看正在调用的特定文件路径? 比 'templates/template.mak'?

大得多的东西

作为参考,这些是 Pyramid TopLevelException 中的 URI 分别看起来像什么:

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'

我明白为什么它不起作用了!

我 运行 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

中提示了我