ValueError:没有这样的渲染器工厂 .mak - Python Pyramid 错误
我升级到了Python 1.4.5,但当我尝试运行我的项目时,出现了这个错误:
ValueError: No such renderer factory .mak
[Applications/MAMP/htdocs/WhoAt/env/www/www/views/index/index.py line:32]
get()
->return self.render(mak)
[Applications/MAMP/htdocs/WhoAt/env/www/www/views/__init__.py line:231]
render()
->response = render_to_response(template, context, request=self.request)
[Applications/MAMP/htdocs/WhoAt/env/lib/python2.7/site-packages/pyramid/renderers.py line:138]
render_to_response()
->return helper.render_to_response(value, None, request=request)
ValueError: No such renderer factory .mak
我昨天查了一下,发现mako模板在新版本中默认不再支持了。需要手动添加回来:Pyramid 1.5的新变化
我按照那个文档上的步骤操作了,但还是遇到了错误 :(
在init.py文件中:
config.include('pyramid_mako') # < added that
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
return config.make_wsgi_app()
在setup.py文件里添加了'pyramid_mako'和chameleon
requires = [
'pyramid',
'pyramid_mako',
'pyramid_chameleon',
'pyramid_debugtoolbar',
'waitress',
]
还在终端运行了setup.py :(
有没有人也在PyCharm中遇到过修复mako模板的问题?
这是我pip freeze的打印列表:http://codepen.io/leongaban/pen/Bvakw/
3 个回答
我在搭建项目的时候,默认使用了chameleon这个模板引擎。后来我把setup.py和init.py里的设置改成了jinja2,但还是遇到了类似的错误,不过在我这儿是.pt格式的文件。
问题出在views.py里,它还是在调用之前的默认模板引擎。所以我在views.py里也做了修改。然后在模板目录里添加了相应的模板文件。例如,我把.pt格式的文件删掉,换成了.jinja2格式的模板文件。
记得要使用你所用模板的正确格式哦。这样就顺利多了。
我之前也遇到过同样的问题(No such renderer factory .mak
),所以我在寻找解决办法。后来我找到一个链接:https://pypi.python.org/pypi/pyramid/1.5a2,这对我解决问题很有帮助。
这个错误的意思是,应用程序在寻找一个模板,可能是mako或chameleon,但由于找不到Renderer,所以应用程序就报错了。
这个错误的主要原因是,在pyramid 1.5a2及之后的版本中,Pyramid社区把mako模板移到了一个叫做pyramid_mako
的包里,而chameleon模板则移到了一个叫做pyramid_chameleon
的包里。
所以为了修复这个问题,我对我的setup.py
和__init__.py
做了一些修改。
情况1:如果你的模板系统是chameleon,
在setup.py
中添加以下内容:
setup(..........)
install_requires=[
'pyramid_chameleon',
'pyramid',
],
然后在__init__.py
中添加以下内容:
config.include('pyramid_chameleon')
情况2:如果你的模板系统是mako,
在setup.py
中添加以下内容:
setup(..........)
install_requires=[
'pyramid_mako',
'pyramid',
],
然后在__init__.py
中添加以下内容:
config.include('pyramid_mako')
接着尝试运行setup.py
,然后再运行development.ini
。
我不得不重新创建我的虚拟环境,重新开始。这样我就能解决缺少的mak问题了。
这里的回答 我用的Pyramid是什么版本,更新的最好方法是什么? 是由 @madjar 提供的。