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

问题描述 投票:2回答:1

无论我做了什么代码修改,我都会在几个小时内收到同样的错误,它引用了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'

基本上,这个错误似乎是:它在寻找一个关键的 babelcurrent_app.extensions 却找不到它。

我试着重新安装 flask-table 通过 pip (它有Babel作为依赖),它是最新的,我也试着重新安装了 Babel 直接,以备不时之需,而且也是最新的。这是Python 3.6。

再往上有一些更具体的参考资料 args 和导入特定于我的代码,在该错误的第15-25行,但如果我在控制台中运行同样的代码,它很好,按照预期工作。只是当我把它放在Flask中时,它就不工作了。其余的应用程序和路由都能正常运行,只是当我把它放在Flask中时,它就不工作了。POSTcheckin_home 我得到上述500错误。

根据我所做的研究,这似乎与以下方式有关 __init__.py 在给定的目录中,被 "应用上下文 "处理,但我真的不知道这意味着什么,也不知道如何解决这个问题,我只知道这是模块中的一个文件,用来告诉python它们是模块。我只知道它是模块中的一个文件,用来告诉python它们是模块。我有另一个Flask应用,在同样的环境下渲染一个类似的HTML表格,工作正常。

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

python flask babel
1个回答
0
投票

这个问题现在已经快两年了,但我刚刚遇到这个问题,搜索错误时登陆了这个页面。在我的例子中,我有一个tables.py文件,里面有

from flask_table import Table, Col, LinkCol

当我创建应用程序时,它工作得很好,但随着它的成长,我不得不移动一些东西。这时,它变成了一个大型的Flask应用,我决定重组一切,以遵循最佳实践。我遵循了几个建议来构建它,其中大部分来自于 https:/exploreflask.comenlatestindex.html。. 因此,我使用的是 启动.py文件来创建应用程序工厂。为了纠正我收到的错误,我只是在init文件中使用了相同的导入语句。看来在这两个地方都必须有它。我不确定这是否是 纠正 的答案,但没有其他答案贴出来,我的这个方法很有效。如果有更多经验的人觉得不是这样,请礼貌地纠正我。

© www.soinside.com 2019 - 2024. All rights reserved.