这个真的让我感到烦恼。
首先说一切都在我的本地机器上完美运行。然而,在服务器上,无论我做什么最终都在"无法找到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'
答案 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: