python - 如何从flask_babel导入_而不抛出关键错误
问题描述
我正在将子模块导入父模块并出现关键错误。
子模块代码(剪枝)如下。
from flask_babel import _
#def _(intext): return intext
... code ...
class Result:
... code ...
msglib = {
'ok':
_('Success'),
...
}
错误信息是:-
发生异常:KeyError 'babel' 文件“C:...\solution\cradle\messaging.py”,第 196 行,在 >> _('Success :)'),文件“C:\Users\Mark Kortink\ OneDrive\dev\metapplica_dev\entity_frame.py",第 15 行,从 solution.cradle.messaging 导入结果
相关事实是:-
- 子模块从flask_babel 导入_。
- 父模块从子模块导入一个类 Result。
- 父模块过去可以工作,我所做的只是将子模块移动到同级目录。
- 如果我直接运行子模块,它可以正常工作,_ 工作。
- 当我运行父模块时,子模块在导入期间抛出一个关键错误。
- 在字典 msglib 中查找“babel”时发生关键错误。
- 如果我用我自己的函数替换 _ 一切正常。
这对我来说是奇怪的行为,我不明白为什么在导入期间首先要搜索“babel”。移动子模块应该没有什么区别,因为我更改了关联的导入。提供我自己的 _ 不会触发错误,因此在这种情况下无法搜索“babel”???
谁能建议这里可能发生的事情?
解决方案
我的 Flask 应用程序使用 Babel 扩展。仔细检查以下错误消息意味着关键错误发生在 Babel 代码中,而不是我的代码中。
文件“C:\Users\Mark Kortink\OneDrive\dev\metapplica\venv\lib\site-packages\flask_babel_init _.py ”,第 548 行,在 gettext t = get_translations() 文件“C:\Users\Mark Kortink \OneDrive\dev\metapplica\venv\lib\site-packages\flask_babel_init _.py ",第 217 行,在 get_translations
babel = current_app.extensions['babel']
我的代码在我必须为 Flask 初始化的 playpen 环境中运行。虽然我不完全理解这个问题,但它与推送应用程序上下文并将以下代码添加到我的初始化脚本中解决了这个问题。
from flask_babel import Babel
babel = Babel()
babel.init_app(app)
推荐阅读
- c# - 调用“参数”的方法,即使有更具体的方法
- reactjs - 使用图层或其他分组方法显示/隐藏标记组
- ssl - certbot 通配符证书不匹配
- python - 如何在 Python 中将作业发送到网络打印机
- angular - ng2-pdfjs-viewer - 错误:无法匹配任何路由
- pine-script - 如何在 Pine 脚本(Tradingview)中绘制这样的线条?
- ios - RPScreenRecorder.shared().startCapture 不会写入/一直失败
- powerbi - 如何在 Power BI 矩阵的列中添加多个字段并在不向下钻取的情况下查看它们
- vba - 清除 ComboBox 并将索引重置为 -1
- c - 在 Windows 10 上使用 Mingw64 设置谷歌测试(C 语言)