【问题标题】:How to import _ from flask_babel without throwing key error如何从flask_babel导入_而不抛出关键错误
【发布时间】:2020-08-28 06:01:29
【问题描述】:

我正在将一个子模块导入父模块并得到一个关键错误。

子模块代码(剪枝)如下。

from flask_babel import _
#def _(intext): return intext

... code ...
class Result:
... code ...

msglib = {

        'ok': 
            _('Success'),
            
        ...
        }

错误信息是:-

发生异常:KeyError '通天塔' 文件“C:...\solution\cradle\messaging.py”,第 196 行,在 >> _('成功 :)'), 文件“C:\Users\Mark Kortink\OneDrive\dev\metapplica_dev\entity_frame.py”,第 15 行,在 从 solution.cradle.messaging 导入结果

相关事实是:-

  • 子模块从flask_babel导入_。
  • 父模块从子模块导入一个类Result。
  • 以前的父模块可以工作,我所做的只是将子模块移动到同级目录。
  • 如果我直接运行子模块,它可以正常工作,_工作。
  • 运行父模块时,子模块在导入过程中抛出key错误。
  • 在字典 msglib 中查找“babel”时出现键错误。
  • 如果我用自己的函数替换 _,一切正常。

这对我来说是奇怪的行为,我不明白为什么在导入期间首先要搜索“babel”。移动子模块应该没有什么区别,因为我更改了关联的导入。提供我自己的 _ 不会触发错误,因此在这种情况下无法搜索“babel”???

谁能建议这里可能发生的事情?

【问题讨论】:

    标签: python flask-babel


    【解决方案1】:

    我的 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2021-01-08
      • 2023-02-10
      • 2018-10-20
      相关资源
      最近更新 更多