TurboGears 2 快速入门立即显示错误

4 投票
1 回答
674 浏览
提问于 2025-04-17 04:39

我刚开始接触TurboGears,并在一个虚拟环境中安装了TG2开发版本。我正在按照快速入门指南进行操作,成功地通过

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())) AttributeError: 'AcceptLanguage'对象没有'best_matches'这个属性。

我在安装的时候是不是搞错了什么,还是说这是TurboGears本身的问题?

补充一下:我创建了第二个项目,叫做GoodnightMoon,这次没有选择Mako模板选项(这是两个设置之间唯一的区别),结果还是出现了同样的错误:

'AcceptLanguage' object has no attribute 'best_matches'

不幸的是,我只能找到这个问题的唯一相关网络搜索,与这个错误完全相关。

有没有其他线索我可以提供给StackOverflow,以帮助回答这个问题?

根据Michael Pederson的建议,我研究了一下i18n。我有一个i18n目录,里面只有一个名为ru(我猜是俄语)的子目录。我正在使用默认语言为英语的系统和浏览器。

我使用的是在提问时最新的TG2版本,v. 2.1.3,以及tg.devtools 2.1.x。

1 个回答

4

这个问题是因为依赖的WebOb版本不对。记得没错的话,安装的是1.2b2版本,这个版本的AcceptLanguage类里没有best_matches这个方法。解决这个问题最简单的方法就是把WebOb-1.2b2换成稳定版的WebOb-1.1.1。这个方法对我来说效果很好。

补充一下:如果你使用的是虚拟环境,只需要把lib/python2.7/site-packages/webob文件夹里的文件替换成官网上下载的版本即可,下载链接是 http://pypi.python.org/pypi/WebOb/1.1.1

撰写回答