TurboGears 2 quickstart немедленно показывает ошибку

#python #pylons #turbogears2

#python #пилоны #turbogears2

Вопрос:

Я новичок в TurboGears и только что установил разработку TG2 в виртуальной среде. Я следую инструкциям в руководстве по быстрому запуску и успешно создал helloworld с помощью

 paster quickstart
  

Я запустил сервер и перешел в веб-браузере на localhost: 8080

Разве вы этого не знаете, я сразу получаю сообщение об ошибке, а не приветственное сообщение, которое, как предполагает документация, я должен видеть.

Ошибка гласит:

 AttributeError: 'AcceptLanguage' object has no attribute 'best_matches'
  

Вот трассировка:

 URL: http://localhost:8080/
File 'C:\VirtualEnv_1\lib\site-packages\weberror-0.10.3-py2.7.egg\weberror\evalexception.py', line 431 in respond
  app_iter = self.application(environ, detect_start_response)
File 'C:\VirtualEnv_1\lib\site-packages\beaker-1.6-py2.7.egg\beaker\middleware.py', line 73 in __call__
  return self.app(environ, start_response)
File 'C:\VirtualEnv_1\lib\site-packages\beaker-1.6-py2.7.egg\beaker\middleware.py', line 155 in __call__
  return self.wrap_app(environ, session_start_response)
File 'C:\VirtualEnv_1\lib\site-packages\routes-1.12.3-py2.7.egg\routes\middleware.py', line 131 in __call__
  response = self.app(environ, start_response)
File 'C:\VirtualEnv_1\lib\site-packages\pylons-1.0-py2.7.egg\pylons\wsgiapp.py', line 107 in __call__
  response = self.dispatch(controller, environ, start_response)
File 'C:\VirtualEnv_1\lib\site-packages\pylons-1.0-py2.7.egg\pylons\wsgiapp.py', line 312 in dispatch
  return controller(environ, start_response)
File 'C:\VirtualEnv_1\Scripts\HelloWorld\helloworld\lib\base.py', line 27 in __call__
  return TGController.__call__(self, environ, start_response)
File 'C:\VirtualEnv_1\lib\site-packages\pylons-1.0-py2.7.egg\pylons\controllers\core.py', line 211 in __call__
  response = self._dispatch_call()
File 'C:\VirtualEnv_1\lib\site-packages\pylons-1.0-py2.7.egg\pylons\controllers\core.py', line 162 in _dispatch_call
  response = self._inspect_call(func)
File 'C:\VirtualEnv_1\lib\site-packages\pylons-1.0-py2.7.egg\pylons\controllers\core.py', line 105 in _inspect_call
  result = self._perform_call(func, args)
File 'C:\VirtualEnv_1\lib\site-packages\turbogears2-2.1.3-py2.7.egg\tg\controllers\dispatcher.py', line 230 in _perform_call
  setup_i18n()
File 'C:\VirtualEnv_1\lib\site-packages\turbogears2-2.1.3-py2.7.egg\tg\i18n.py', line 61 in setup_i18n
  

pylons.request.accept_language.best_matches()))
Ошибка атрибута: объект ‘AcceptLanguage’ не имеет атрибута ‘best_matches’

Я что-то перепутал, когда устанавливал его, или это проблема с TurboGears?

Редактировать: я создал второй проект, который я назвал GoodnightMoon, на этот раз без опции шаблона Mako (которая является единственной разницей между настройками), и я получаю ту же ошибку:

 'AcceptLanguage' object has no attribute 'best_matches'
  

К сожалению, этот вопрос — единственный, который я могу найти с помощью веб-поиска, связанного именно с этой ошибкой.

Есть ли какие-либо другие подсказки, которые я могу использовать и предоставить stackoverflow, чтобы помочь ответить на этот вопрос?

Следуя приведенному ниже совету Майкла Педерсона, я исследовал i18n. У меня есть каталог i18n только с одним подкаталогом с именем ru (я полагаю, русский). Я работаю над системами и браузерами с английским языком по умолчанию.

Я использую любой самый актуальный дистрибутив TG2 на момент написания этого вопроса, v. 2.1.3 и tg.devtools 2.1.x

Комментарии:

1. Честно говоря, это звучит как проблема с i18n. Какой язык используется по умолчанию в вашем браузере? Какую версию TurboGears вы используете? Можете ли вы предоставить ссылку на точное руководство, которому вы следуете? Пара старых версий могут давать вам неправильные инструкции для новейшей версии TG.

2. то же самое для меня здесь: любой ответ на это?

Ответ №1:

Проблема в неправильной зависимости от webbob. Установлен IIRC 1.2b2, в котором отсутствует метод best_matches для класса AcceptLanguage. Самый простой способ преодолеть эту проблему — заменить WebOb-1.2b2 на стабильный WebOb-1.1.1. Это решение отлично работает для меня.

PS: если вы используете virtual-env — просто замените файлы внутри lib / python2.7/site-packages /webob файлами с официального сайта http://pypi.python.org/pypi/WebOb/1.1.1

Комментарии:

1. спасибо за совет. мой виртуальный веб-файл env выполнен в форме .egg — тот, который доступен онлайн, отсутствует — как я могу скомпилировать в egg, или это необходимо?

2. Понял — cmd в каталог загрузки во время работы виртуальной среды, используйте easy_install setup.py установить

3. Это сделало это! Это ответ! Теперь я получаю экран приветствия. 🙂

4. Как вы узнали, что это проблема?

5. просто копался в источниках. Из ошибки очевидно, что в классе AcceptLanguage отсутствует метод best_matches , хотя было несколько его применений (пилоны и т. Д.). Я просмотрел дескрипторы настройки и обнаружил, что требование webob примерно такое>= 1.1. Я решил проверить этот метод по источникам и обнаружил, что он присутствует в 1.1.1. Вот и все