【问题标题】:ImportError: cannot import name 'escape' from 'jinja2'ImportError:无法从“jinja2”导入名称“escape”
【发布时间】:2022-06-17 10:31:35
【问题描述】:

我收到了错误

ImportError: cannot import name 'escape' from 'jinja2'

当尝试使用以下 requirements.txt 运行代码时:

chart_studio==1.1.0
dash==2.1.0
dash_bootstrap_components==1.0.3
dash_core_components==2.0.0
dash_html_components==2.0.0
dash_renderer==1.9.1
dash_table==5.0.0
Flask==1.1.2
matplotlib==3.4.3
numpy==1.20.3
pandas==1.3.4
plotly==5.5.0
PyYAML==6.0
scikit_learn==1.0.2
scipy==1.7.1
seaborn==0.11.2
statsmodels==0.12.2
urllib3==1.26.7

试过

pip install jinja2

但是要求已经满足了。
在 Windows 系统上运行此代码。

【问题讨论】:

    标签: python-3.x compiler-errors jinja2 pydash


    【解决方案1】:

    Jinja 是 Fl​​ask 的依赖项,Flask V1.X.X 使用 Jinja 的 escape 模块,但最近对 escape 模块的支持是 dropped in newer versions of Jinja

    要解决此问题,只需在 requirements.txt 中更新到较新版本的 Flask V2.X.X,其中 Flask 不再使用 Jinja 的 escape 模块。

    Flask==2.1.0
    

    另外,请注意团队不再支持 Flask V1.X.X。如果你想继续使用这个旧版本,this Github issue may help.

    【讨论】:

      【解决方案2】:

      发生这种情况是因为 Jinja 在最近的版本 — 3.1.0 — released on March 24th, 2022 中删除了这些功能。

      Markupescape 应该从 MarkupSafe 导入。

      这里有两种选择:

      1. 此错误来自您的依赖项之一。
        您应该考虑的第一件事是升级上述依赖项。
        如果这是不可能的,您可以从这里将您的 Jinja 版本降级到仍包含 escape 的版本,例如,在 requirements.txt 中明确添加它:

        jinja2<3.1.0
        
      2. 或者,您的错误来自您编写的代码,因此您可以按照 Jinja 发行说明中的​​建议通过从 MarkupSafe 导入它来修复它。

        所以,你应该使用

        from markupsafe import escape
        

        而不是

        from jinja2 import escape
        

      【讨论】:

      • 与 jinja2werkzeug==2.0.3。
      • 第二个对我有用,谢谢
      【解决方案3】:

      ImportError: cannot import name 'escape' from 'jinja2'

      这发生在我使用带有 jupyter notebook 的 Voila 并使用以下方法解决:

      1. 进入这个目录C:\Users\admin\anaconda3\Lib\site-packages\nbconvert\filters\ansi.py
      2. 将此行添加到文件from markupsafe import escape的第一个
      3. 同样将这行代码text = jinja2.utils.escape(text)改为text = escape(text)

      【讨论】:

        【解决方案4】:

        所以发生在我身上的是,我在 github 上克隆了一个 repo 并安装了烧瓶,并使用命令 pip install -r requirements.txt 激活了我的 virtualenv,但是当我尝试运行服务器时,它出现了错误:

        ImportError: cannot import name 'escape' from 'jinja2'

        所以我所做的是运行命令 pip uninstall flask 并通过运行 pip install flask 重新安装它,然后再次运行我的服务器,然后它工作了。

        简单的解决方案

        pip uninstall flask
        

        然后

        pip install flask 
        

        【讨论】:

          猜你喜欢
          • 2022-06-19
          • 1970-01-01
          • 2023-01-20
          • 1970-01-01
          • 2019-01-14
          • 2022-01-22
          • 2021-06-30
          • 2020-10-19
          相关资源
          最近更新 更多