KeyError:'babel' - 与__init__.py相关 - 未明确使用Babel

时间:2018-06-08 22:03:12

标签: python flask babel

我几个小时都得到了同样的错误,无论我做了什么代码更改,它都引用了Babel,一个我没有专门调用或使用的依赖项,尽管我认为它被调用是有原因的。它来自一个函数,该函数应该使用flask-table动态呈现一些HTML来创建表。

2018-06-08 21:30:12,121: [2018-06-08 21:30:12,114] ERROR in app: Exception on /checkin_home/ [POST]
2018-06-08 21:30:12,121: Traceback (most recent call last):
2018-06-08 21:30:12,121:   File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1982, in wsgi_app
2018-06-08 21:30:12,121:     response = self.full_dispatch_request()
2018-06-08 21:30:12,121:   File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1614, in full_dispatch_request
2018-06-08 21:30:12,122:     rv = self.handle_user_exception(e)
2018-06-08 21:30:12,122:   File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1517, in handle_user_exception
2018-06-08 21:30:12,122:     reraise(exc_type, exc_value, tb)
2018-06-08 21:30:12,122:   File "/usr/local/lib/python3.6/dist-packages/flask/_compat.py", line 33, in reraise
2018-06-08 21:30:12,122:     raise value
2018-06-08 21:30:12,122:   File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1612, in full_dispatch_request
2018-06-08 21:30:12,122:     rv = self.dispatch_request()
2018-06-08 21:30:12,122:   File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1598, in dispatch_request
2018-06-08 21:30:12,123:     return self.view_functions[rule.endpoint](**req.view_args)
2018-06-08 21:30:12,123:   File "/my/working_dir/path/mysite/project/mci.py", line 49, in checkin_home_post
2018-06-08 21:30:12,123:     return checkin_search_module.checkin_search(event_guid=event_guid, input_string=input_string)
2018-06-08 21:30:12,123:   File "/my/working_dir/path/mysite/project/checkin_search_module.py", line 3, in checkin_search
2018-06-08 21:30:12,123:     from flask_table import Table, Col
2018-06-08 21:30:12,123:   File "/my/working_dir/path/.local/lib/python3.6/site-packages/flask_table/__init__.py", line 1, in <module>
2018-06-08 21:30:12,123:     from .table import Table, create_table
2018-06-08 21:30:12,123:   File "/my/working_dir/path/.local/lib/python3.6/site-packages/flask_table/table.py", line 8, in <module>
2018-06-08 21:30:12,124:     from .columns import Col
2018-06-08 21:30:12,124:   File "/my/working_dir/path/.local/lib/python3.6/site-packages/flask_table/columns.py", line 161, in <module>
2018-06-08 21:30:12,124:     class BoolCol(OptCol):
2018-06-08 21:30:12,124:   File "/my/working_dir/path/.local/lib/python3.6/site-packages/flask_table/columns.py", line 166, in BoolCol
2018-06-08 21:30:12,124:     yes_display = _('Yes')
2018-06-08 21:30:12,124:   File "/usr/local/lib/python3.6/dist-packages/flask_babel/__init__.py", line 539, in gettext
2018-06-08 21:30:12,124:     t = get_translations()
2018-06-08 21:30:12,124:   File "/usr/local/lib/python3.6/dist-packages/flask_babel/__init__.py", line 214, in get_translations
2018-06-08 21:30:12,124:     babel = current_app.extensions['babel']
2018-06-08 21:30:12,125: KeyError: 'babel'

在基本级别上,错误似乎是:它正在寻找babel中的密钥current_app.extensions而未找到它。

我尝试通过flask-table(其中包含Babel作为依赖项)重新安装pip并且它已经完成了日期,我还尝试直接重新安装Babel,以防万一,以及它也是最新的。这是Python 3.6。

在该错误的第15-25行中,还有一些更具体的参考文献和args以及特定于我的代码的导入,但是如果我在控制台中运行相同的代码,那就没问题,按预期工作。只是当我把它放在Flask中它不起作用时。应用程序和路由的其余部分正常运行,只有当我POSTcheckin_home时才会出现上述500错误。

从我能够做的研究来看,它似乎与“应用程序上下文”处理给定目录中__init__.py的方式有关但我老实说真的不知道这意味着什么或如何解决它。我所知道的是模块中的文件告诉python他们是模块。我有另一个Flask应用程序,它在相同的环境中呈现类似的HTML表,工作正常。

我可以发布一个近似的代码,但它需要大量的敏感信息的混淆,所以在我做之前,我想知道这是否可能这是一个简单的我只是没有看到。

1 个答案:

答案 0 :(得分:0)

这个问题现在已经有将近两年的历史了,但是当我搜索错误时,我碰到了这个问题并进入了该页面。就我而言,我有一个表

from flask_table import Table, Col, LinkCol

在创建应用程序时效果很好,但是随着它的发展,我不得不四处移动。那时它变成了一个大的Flask应用程序,我决定对所有内容进行重组,以遵循最佳实践。我遵循了一些结构化建议,其中大部分来自https://exploreflask.com/en/latest/index.html。因此,我正在使用 init .py文件创建应用程序工厂。为了纠正我收到的错误,我只是在init文件中使用了相同的import语句。看来有必要在两个地方都有它。我不确定这是否是正确答案,但是没有其他答案发布,这对我有用。如果有更多经验的人有其他感觉,请礼貌地纠正我。