我在 Pyramid 中创建应用时遇到了问题。当我尝试通过粘贴服务时,我得到:
File "/home/viraptor/blah/blah/__init__.py", line 23, in main
return config.make_wsgi_app()
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 916, in make_wsgi_app
self.commit()
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 491, in commit
self._ctx.execute_actions()
File "/home/viraptor/pyramid/lib/python2.6/site-packages/zope/configuration/config.py", line 626, in execute_actions
callable(*args, **kw)
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 1291, in register
derived_view = deriver(view)
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2681, in __call__
self.mapped_view(view))))))))
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2624, in inner
wrapped_view = wrapped(self, view)
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2693, in mapped_view
mapped_view = mapper(**self.kw)(view)
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2860, in __call__
view = self.map_nonclass(view)
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2876, in map_nonclass
ronly = requestonly(view, self.attr)
File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2966, in requestonly
if len(args) - len(defaults) == 1:
zope.configuration.config.ConfigurationExecutionError: <type 'exceptions.TypeError'>: object of type 'NoneType' has no len()
in:
('/home/viraptor/blah/blah/__init__.py', 22, 'main', "config.add_route('customer', '/customer/{customer_id}', view='blah.views.customer.view', view_renderer='customer_view.mak', view_permission='view', traverse='/customer/{customer_id}')")
这可能是什么原因?我最近甚至没有更改该配置,只更改了应用程序的其余部分。
最佳答案
我怀疑您遇到了 Pyramid 较新版本中已修复的错误;您的回溯表明 args
或 defaults
为 None
,但除非 args
不是,否则无法到达该代码分支None
,而 defaults
可能是 None
。我发现以下对 Pyramids 的提交添加了针对 defaults
为 None 的特定测试:
https://github.com/Pylons/pyramid/commit/f168197609169fb01b65adeb3eb59d069000fe2c
我说你有一个没有任何默认值的方法,只有一个请求参数 (method(self, request)
,解决方法是添加一个带有默认值的关键字参数 (方法( self ,请求,虚拟=无)
。
免责声明:还没有机会使用 Pyramid,所以我的分析完全基于 Pyramid 代码库。
关于python - Pyramid 配置加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770044/