You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Flask启动时的'cannot import name 'escape' from 'jinja2''错误

问题描述

启动Flask时触发如下错误:

Traceback (most recent call last):
  File "/home/ec2-user/meta-system/run_app.py", line 22, in <module>
    from system import FlaskApp
  File "/home/ec2-user/meta-system/system/__init__.py", line 20, in <module>
    from flask import Flask
  File "/home/ec2-user/meta-system/venv/lib64/python3.9/site-packages/flask/__init__.py", line 14, in <module>
    from jinja2 import escape
ImportError: cannot import name 'escape' from 'jinja2' (/home/ec2-user/meta-system/venv/lib64/python3.9/site-packages/jinja2/__init__.py)
make: *** [Makefile:17: up] Error 1

已尝试升级Flask和Jinja2但无效,当前依赖版本:

[ec2-user@ip-172-31-26-227 meta-system]$ pip3 show flask
Name: Flask
Version: 2.3.3
Summary: A simple framework for building complex web applications.
[ec2-user@ip-172-31-26-227 meta-system]$ pip3 show jinja2
Name: Jinja2
Version: 3.1.2
Summary: A very fast and expressive template engine.

因其他依赖限制无法降级Jinja2,求可行解决方案。

解决方案
  • 修改Flask导入语句:找到虚拟环境中Flask的__init__.py文件(路径:/home/ec2-user/meta-system/venv/lib64/python3.9/site-packages/flask/__init__.py),将第14行的from jinja2 import escape替换为from markupsafe import escape。Jinja2 3.x已将escape函数迁移到markupsafe库,手动修改可直接解决导入错误。
  • 重新安装Flask:执行命令pip install Flask==2.3.3 --force-reinstall,强制重新安装Flask,确保其依赖的markupsafe版本与当前环境兼容,修复可能存在的文件损坏或缓存问题。
  • 固定markupsafe版本:先执行pip check检查依赖冲突,若发现markupsafe版本异常,执行pip install markupsafe==2.1.3固定版本(该版本与Jinja2 3.1.2、Flask 2.3.3完全兼容),避免其他依赖篡改版本导致冲突。

内容的提问来源于stack exchange,提问作者Perry Hoekstra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:10:10