Ошибка загрузки конфигурации пирамиды

У меня возникла проблема с созданием приложения в 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}')")

Что может быть причиной этого? В последнее время я даже не менял эту конфигурацию, только остальную часть приложения.


person viraptor    schedule 24.04.2011    source источник
comment
Вы не включили фактическое исключение, только трассировку стека. Никто не знает, что произошло сейчас, только где… :-)   -  person Martijn Pieters    schedule 24.04.2011
comment
@Martijn Pieters - Python печатает исключение в конце - оно там. Это была ConfigurationExecutionError.   -  person viraptor    schedule 24.04.2011
comment
Ах, моя вина, мобильное представление на моем iPhone не показывало весь текст, и у меня не было никаких признаков того, что он был длиннее. Извинения!   -  person Martijn Pieters    schedule 24.04.2011


Ответы (2)


Я подозреваю, что вы столкнулись с ошибкой, исправленной в более новых версиях Pyramid; ваша трассировка указывает, что либо args, либо defaults является None, но эта ветвь кода не может быть достигнута, если только args не является None, оставляя возможность вместо этого defaults None. Я нашел следующую фиксацию в Pyramids, которая добавляет специальный тест для defaults None:

https://github.com/Pylons/pyramid/commit/f168197609169fb01b65adeb3eb59d069000fe2c

Я говорю, что у вас есть метод без каких-либо значений по умолчанию и только с параметром запроса (method(self, request), обходным путем было бы добавить аргумент ключевого слова со значением по умолчанию (method(self, request, dummy=None).

Отказ от ответственности: у меня еще не было возможности работать с Pyramid, поэтому мой анализ основан исключительно на кодовой базе Pyramid.

person Martijn Pieters    schedule 24.04.2011