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

Docker Nginx负载均衡应用崩溃,Flask手动运行遇Jinja2导入错误

解决Docker容器中Flask应用的ImportError: cannot import name 'escape' from 'jinja2'问题

问题根源是Jinja2 3.0+版本移除了escape的直接导出,而Docker容器默认安装的Jinja2版本与本地兼容版本不一致,导致报错。以下是三种可行解决方案:

方案1:固定兼容的Jinja2版本

在requirements.txt中明确指定低于3.0的Jinja2版本,与Flask 2.1.0匹配:

Flask==2.1.0
Jinja2==2.11.3

修改后重新构建Docker镜像,确保依赖安装正确。

方案2:修改代码中的导入语句

如果不想降低Jinja2版本,找到应用代码中从jinja2导入escape的行,替换为从markupsafe导入(Flask 2.x已默认依赖该包):

# 替换前
from jinja2 import escape

# 替换后
from markupsafe import escape

方案3:清理Docker构建缓存

若之前构建过镜像,Docker可能缓存了旧依赖,需强制重新构建:

docker-compose build --no-cache

本地运行正常是因为本地环境的Jinja2版本为兼容版,而Docker容器会自动拉取最新依赖版本,导致API不兼容。上述方案任选其一即可解决容器崩溃和Nginx 502问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:46