Python 金字塔配置加载错误

Python 金字塔配置加载错误,python,configuration,pyramid,Python,Configuration,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.co

我在金字塔中创建应用程序时遇到问题。当我尝试通过粘贴服务时,我得到:

  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}')")
File”/home/viraptor/blah/blah/__init__uuuu.py“,主目录第23行
return config.make_wsgi_app()
make_wsgi_应用程序中的文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第916行
self.commit()
提交中的文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第491行
self.\u ctx.execute\u actions()
文件“/home/viraptor/pyramid/lib/python2.6/site packages/zope/configuration/config.py”,第626行,在execute\u actions中
可调用(*参数,**kw)
文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第1291行,在寄存器中
派生视图=派生视图(视图)
文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第2681行,在调用中__
self.mapped_视图(视图‘‘‘‘‘‘‘‘‘‘‘‘)
文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第2624行,在内部
包装的\视图=包装的(自我,视图)
映射视图中的文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第2693行
映射视图=映射器(**self.kw)(视图)
文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第2860行,在调用中__
视图=self.map\u非类(视图)
map_非类中的文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第2876行
ronly=requestonly(视图,self.attr)
文件“/home/viraptor/pyramid/lib/python2.6/site packages/pyramid/config.py”,第2966行,仅限requestonly
如果len(args)-len(默认值)==1:
zope.configuration.config.ConfigurationExecutionError::类型为“NoneType”的对象没有len()
在:
('/home/viraptor/blah/blah/uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.py',22',config.add uuuu route('customer','/customer/{customer\u id}',view='blah.views.customer='customer\u view.view''

这是什么原因呢?我最近甚至没有更改配置,只更改了应用程序的其余部分。

我怀疑你遇到了在新版本的Pyramid中修复的错误;您的回溯表明
args
defaults
None
,但除非
args
不是
None
,否则无法到达该代码分支,因此可能
defaults
None
。我发现下面的提交到金字塔中,它为
默认值
添加了一个特定的无测试:

我说您有一个没有任何默认值的方法,只有一个请求参数(
method(self,request)
),解决方法是添加一个带有默认值的关键字参数(
method(self,request,dummy=None)


免责声明:尚未有机会使用Pyramid,因此我的分析完全基于Pyramid代码库。

config.add\u route
仅接受一个位置参数,第二个参数应使用带有
模式的关键字

其次,我认为
路由
遍历
不可能有相同的模式。通过
遍历
关键字,您可以定义
的起始位置。这在中进行了解释


但是引发的错误异常可能会提供更多信息。

您没有包括实际的异常,只有stacktrace。现在没有人知道发生了什么,只有在…:-)@Martijn Pieters-Python在结尾处打印异常-它就在那里。这是ConfigurationExecutionError。啊,我的错,我的iPhone上的移动视图没有显示全部文本,我也没有迹象表明它更长。抱歉!在混合a中使用树时,在URL调度中使用类似的traverse=as pattern=参数是完全有效的此外,虽然模式是add_route中的关键字参数,但基本上所有文档都将其视为位置参数。