ValueError:没有这样的渲染器工厂 .mak - Python Pyramid 错误

3 投票
3 回答
2529 浏览
提问于 2025-04-18 02:02

我升级到了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 个回答

0

我在搭建项目的时候,默认使用了chameleon这个模板引擎。后来我把setup.py和init.py里的设置改成了jinja2,但还是遇到了类似的错误,不过在我这儿是.pt格式的文件。

问题出在views.py里,它还是在调用之前的默认模板引擎。所以我在views.py里也做了修改。然后在模板目录里添加了相应的模板文件。例如,我把.pt格式的文件删掉,换成了.jinja2格式的模板文件。

记得要使用你所用模板的正确格式哦。这样就顺利多了。

0

我之前也遇到过同样的问题(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

1

我不得不重新创建我的虚拟环境,重新开始。这样我就能解决缺少的mak问题了。

这里的回答 我用的Pyramid是什么版本,更新的最好方法是什么? 是由 @madjar 提供的。

撰写回答