Cuando recientemente implementé mi proyecto que incluye Flask==1.0.2 y Jinja2>=2.10.1, recibí el siguiente error. Estaba funcionando bien cuando lo implementé el día anterior. Intenté actualizar Jinja2 pero eso no solucionó el problema.
File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi self.wsgi = self.app.wsgi() File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in load return self.load_wsgiapp() File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp return util.import_app(self.app_uri) File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 359, in import_app mod = importlib.import_module(module) File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 728, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/app/search_service/__init__.py", line 12, in <module> from flasgger import Swagger File "/usr/local/lib/python3.7/site-packages/flasgger/__init__.py", line 10, in <module> from .base import Swagger, Flasgger, NO_SANITIZER, BR_SANITIZER, MK_SANITIZER, LazyJSONEncoder # noqa File "/usr/local/lib/python3.7/site-packages/flasgger/base.py", line 19, in <module> from flask import Blueprint File "/usr/local/lib/python3.7/site-packages/flask/__init__.py", line 19, in <module> from jinja2 import Markup, escape ImportError: cannot import name 'Markup' from 'jinja2' (/usr/local/lib/python3.7/site-packages/jinja2/__init__.py) requirements.txt :
attrs>=19.1.0 boto3==1.17.23 click==7.0 itsdangerous==2.0.1 flasgger==0.9.5 Flask==1.0.2 Flask-RESTful>=0.3.6 flask-cors==3.0.8 gunicorn==20.1.0 Jinja2>=2.10.1 jsonschema>=3.0.1,<4.0 marshmallow>=3.0,<=3.6 marshmallow3-annotations>=1.0.0 pytz==2021.1 requests>=2.25.0 requests-aws4auth==1.1.0 statsd==3.2.1 typing==3.6.4 werkzeug>=2.0.0 wheel==0.36.2 itsdangerous==2.0.1La versión real de jinja es 3.x intenta actualizar jinja:
pip uninstall jinja2 pip install --upgrade jinja2En cuanto a la documentación
Se corrigió llamar obsoleto a jinja2.Markup sin un argumento. Utilice markupsafe.Markup en su lugar. #1438
Entonces, para importar Markup, use el siguiente código:
>>> from jinja2.utils import markupsafe >>> markupsafe.Markup() Markup('')Como el error de importación proviene del File "/usr/local/lib/python3.7/site-packages/flask/__init__.py
Intenté crear una nueva aplicación Flask usando Flask==1.0.2 y descubrí que el error proviene de esta versión de Flask cuando se usaba con Jinja2>=2.10.1.
Pero cuando elimina Flask==1.0.2 e instala Flask==2.0.3 , todo funciona bien.
pip uninstall Flask Jinja2 pip install Flask Jinja2dependencias
pip freeze click==8.0.4 Flask==2.0.3 itsdangerous==2.1.2 Jinja2==3.1.1 MarkupSafe==2.1.1 Werkzeug==2.0.3